echo
Outputs one or more expressions, with no additional newlines or spaces.
echo is not a function but a language construct. Its arguments are a list of expressions following the echo keyword, separated by commas, and not delimited by parentheses. Unlike some other language constructs, echo does not have any return value, so it cannot be used in the context of an expression.
echo also has a shortcut syntax, where you can immediately follow the opening tag with an equals sign. This syntax is available even with the short_open_tag configuration setting disabled.
I have foo.?=$foo?>
The major differences to print are that echo accepts multiple arguments and doesn’t have a return value.
Parameters
One or more string expressions to output, separated by commas. Non-string values will be coerced to strings, even when the strict_types directive is enabled.
Return Values
No value is returned.
Examples
Example #1 echo examples
echo «echo does not require parentheses.» ;
?php
// Strings can either be passed individually as multiple arguments or
// concatenated together and passed as a single argument
echo ‘This ‘ , ‘string ‘ , ‘was ‘ , ‘made ‘ , ‘with multiple parameters.’ , «\n» ;
echo ‘This ‘ . ‘string ‘ . ‘was ‘ . ‘made ‘ . ‘with concatenation.’ . «\n» ;
// No newline or space is added; the below outputs «helloworld» all on one line
echo «hello» ;
echo «world» ;
// Same as above
echo «hello» , «world» ;
echo «This string spans
multiple lines. The newlines will be
output as well» ;
echo «This string spans\nmultiple lines. The newlines will be\noutput as well.» ;
// The argument can be any expression which produces a string
$foo = «example» ;
echo «foo is $foo » ; // foo is example
$fruits = [ «lemon» , «orange» , «banana» ];
echo implode ( » and » , $fruits ); // lemon and orange and banana
// Non-string expressions are coerced to string, even if declare(strict_types=1) is used
echo 6 * 7 ; // 42
// Because echo does not behave as an expression, the following code is invalid.
( $some_var ) ? echo ‘true’ : echo ‘false’ ;
// However, the following examples will work:
( $some_var ) ? print ‘true’ : print ‘false’ ; // print is also a construct, but
// it is a valid expression, returning 1,
// so it may be used in this context.
echo $some_var ? ‘true’ : ‘false’ ; // evaluating the expression first and passing it to echo
?>
Notes
Note: Because this is a language construct and not a function, it cannot be called using variable functions, or named arguments.
Note: Using with parentheses
Surrounding a single argument to echo with parentheses will not raise a syntax error, and produces syntax which looks like a normal function call. However, this can be misleading, because the parentheses are actually part of the expression being output, not part of the echo syntax itself.
echo( «hello» );
// also outputs «hello», because («hello») is a valid expression
echo( 1 + 2 ) * 3 ;
// outputs «9»; the parentheses cause 1+2 to be evaluated first, then 3*3
// the echo statement sees the whole expression as one argument
echo «hello» , » world» ;
// outputs «hello world»
echo( «hello» ), ( » world» );
// outputs «hello world»; the parentheses are part of each expression
echo( «hello» , » world» );
// Throws a Parse Error because («hello», » world») is not a valid expression
?>
Tip
Passing multiple arguments to echo can avoid complications arising from the precedence of the concatenation operator in PHP. For instance, the concatenation operator has higher precedence than the ternary operator, and prior to PHP 8.0.0 had the same precedence as addition and subtraction:
// Below, the expression ‘Hello ‘ . isset($name) is evaluated first,
// and is always true, so the argument to echo is always $name
echo ‘Hello ‘ . isset( $name ) ? $name : ‘John Doe’ . ‘!’ ;
?php
// The intended behaviour requires additional parentheses
echo ‘Hello ‘ . (isset( $name ) ? $name : ‘John Doe’ ) . ‘!’ ;
// In PHP prior to 8.0.0, the below outputs «2», rather than «Sum: 3»
echo ‘Sum: ‘ . 1 + 2 ;
// Again, adding parentheses ensures the intended order of evaluation
echo ‘Sum: ‘ . ( 1 + 2 );
If multiple arguments are passed in, then parentheses will not be required to enforce precedence, because each expression is separate:
echo «Hello » , isset( $name ) ? $name : «John Doe» , «!» ;
?php
Что такое php echo?
Существующее определение: «вывод текста». Куда echo выводит текст? И каким образом браузер этот текст получает? В интересующем меня случае: если браузер отправляет http get-запрос серверу, то через echo в итоге от сервера клиенту посылается так же get ответ?
Отслеживать
задан 19 янв 2018 в 15:27
303 1 1 серебряный знак 14 14 бронзовых знаков
echo — вывод текста в браузер. От сервера клиенту отправляется http-ответ, не может быть post/get/put/delete ответа. По этому поводу советую почитать про http протокол и его работу
19 янв 2018 в 15:29
не в браузер а в стандартный вывод. это может быть и консоль и файл и т.п.
19 янв 2018 в 15:31
пока неправильные ответы.
19 янв 2018 в 15:34
Понятия «get ответ» не существует. Да, PHP пишет в буфер вывода (если установлен перехват вывода), при опустошении буфера это попадает в следующий пункт назначения — либо тело HTTP-ответа (который отправится после завершения работы скрипта), если PHP обрабатывает HTTP-запрос, либо в stdout, если PHP работает в консольном режиме. Точной спецификации по этому вопросу нет, так что есть вероятность существования какого-то дополнительного жонглирования точкой вывода.
19 янв 2018 в 15:42
Вот странность, если мы отправляем get-запрос на сервер, где выполняется php и выводится текст через echo. После чего браузер как-то получает ответ. Но ведь get-запросы не имеют тела? Тогда каким образом мы получаем текст в ответе? Где я ошибаюсь?
echo
На самом деле echo — это не функция, а конструкция языка, поэтому заключать аргументы в скобки необязательно. echo (в отличии от других языковых конструкций) не ведет себя как функция, поэтому не всегда может быть использована в контексте функции. Вдобавок, если вы хотите передать более одного аргумента в echo, эти аргументы нельзя заключать в скобки.
echo имеет также краткую форму, представляющую собой знак равенства, следующий непосредственно за открывающим тэгом. До версии PHP 5.4.0, этот сокращенный синтаксис допускался только когда включена директива конфигурации short_open_tag.
I have foo.?=$foo?>
Список параметров
The parameter to output.
Возвращаемые значения
Эта функция не возвращает значения после выполнения.
Примеры
Пример #1 Примеры использования echo
echo «Это займет
несколько строк. Переводы строки тоже
выводятся» ;
echo «Это займет\nнесколько строк. Переводы строки тоже\nвыводятся» ;
echo «Экранирование символов делается \»Так\».» ;
// с echo можно использовать переменные .
$foo = «foobar» ;
$bar = «barbaz» ;
echo «foo — это $foo » ; // foo — это foobar
// . и массивы
$baz = array( «value» => «foo» );
// При использовании одиночных кавычек выводится имя переменной, а не значение
echo ‘foo — это $foo’ ; // foo — это $foo
// Если вы не используете другие символы, можно вывести просто значения переменных
echo $foo ; // foobar
echo $foo , $bar ; // foobarbarbaz
// Некоторые предпочитают передачу нескольких аргументов вместо конкатенации
echo ‘Эта ‘ , ‘строка ‘ , ‘была ‘ , ‘создана ‘ , ‘несколькими параметрами.’ , chr ( 10 );
echo ‘Эта ‘ . ‘строка ‘ . ‘была ‘ . ‘создана ‘ . ‘с помощью конкатенации.’ . «\n» ;
echo Здесь используется синтаксис «here document» для вывода
нескольких строк с подстановкой переменных $variable .
Заметьте, что закрывающий идентификатор должен
располагаться в отдельной строке. никаких пробелов!
END;
// Следующая строка неверна, так как echo не является функцией
( $some_var ) ? echo ‘true’ : echo ‘false’ ;
// Но это можно записать по другому
( $some_var ) ? print ‘true’ : print ‘false’ ; // print также является конструкцией языка,
// но ведет себя как функция, поэтому она
// может быть использована в этом контексте.
echo $some_var ? ‘true’ : ‘false’ ; // echo вынесен за пределы выражения
?>
Примечания
Замечание: Поскольку это языковая конструкция, а не функция, она не может вызываться при помощи переменных функций.
Смотрите также
- print — Выводит строку
- printf() — Выводит отформатированную строку
- flush() — Сброс системного буфера вывода
- Heredoc синтаксис
echo в PHP
echo и print — это языковые конструкции (или «стейтменты»), которые могут использоваться как со скобками, так и без них.
echo в PHP
echo — это конструкция в PHP для вывода объектов. Это не функция, поэтому круглые скобки использовать не обязательно. Для вывода 2 или более значений используется запятая. Стейтмент echo может использоваться для вывода строк, спецсимволов, переменных, массивов и других объектов. Ниже приведены некоторые важные моменты, которые стоит знать:
echo — это стейтмент, который используется для вывода объектов;
echo не возвращает никакого значения;
echo работает быстрее, чем print ;
мы можем передавать в echo несколько строк, разделенных запятой ( , );
echo можно использовать как с круглыми скобками, так и без них: echo() и echo .
