echo
Выводит одно или несколько выражений без дополнительных символов новой строки или пробелов.
На самом деле, echo — это не функция, а языковая конструкция. Её аргументы — это список выражений, следующих за ключевым словом echo , разделённых запятыми и не ограниченных круглыми скобками. В отличие от некоторых других языковых конструкций, echo не имеет никакого возвращаемого значения, поэтому её нельзя использовать в контексте выражения.
echo имеет также краткую форму, представляющую собой знак равенства, следующий непосредственно за открывающим тегом. Этот сокращённый синтаксис работает даже с отключённым параметром конфигурации short_open_tag.
Единственное отличие от print в том, что echo принимает несколько аргументов и не имеет возвращаемого значения.
Список параметров
Одно или несколько строковых выражений для вывода, разделённых запятыми. Нестроковые значения будут преобразованы в строки, даже если включена директива strict_types .
Возвращаемые значения
Функция не возвращает значения после выполнения.
Примеры
Пример #1 Примеры использования echo
echo «echo не требует скобок.» ;
?php
// Строки можно передавать по отдельности как несколько аргументов или
// объединять вместе и передавать как один аргумент.
echo ‘Эта ‘ , ‘строка ‘ , ‘сформирована ‘ , ‘из ‘ , ‘нескольких параметров.’ , «\n» ;
echo ‘Эта ‘ . ‘строка ‘ . ‘сформирована ‘ . ‘с ‘ . ‘помощью конкатенации.’ . «\n» ;
// Новая строка или пробел не добавляются; пример ниже выведет «приветмир» в одну строку
echo «привет» ;
echo «мир» ;
// То же, что и выше
echo «привет» , «мир» ;
echo «Эта строка занимает
несколько строк. Новые строки также
будут выведены» ;
echo «Эта строка занимает\nнесколько строк. Новые строки также\nбудут выведены.» ;
// Аргументом может быть любое выражение, производящее строку
$foo = «пример» ;
echo «пример — это $foo » ; // пример — это пример
$fruits = [ «лимон» , «апельсин» , «банан» ];
echo implode ( » и » , $fruits ); // лимон и апельсин и банан
// Нестроковые выражения приводятся к строковым, даже если используется declare(strict_types=1)
echo 6 * 7 ; // 42
// Поскольку echo не работает как выражение, следующий код некорректен.
( $some_var ) ? echo ‘true’ : echo ‘false’ ;
// Однако следующие примеры будут работать:
( $some_var ) ? print ‘true’ : print ‘false’ ; // print также является конструкцией, но
// это допустимое выражение, возвращающее 1,
// поэтому его можно использовать в этом контексте..
echo $some_var ? ‘true’ : ‘false’ ; // сначала выполняется выражение, результат которого передаётся в echo
?>
Примечания
Замечание: Поскольку это языковая конструкция, а не функция, она не может вызываться при помощи переменных функций или именованных аргументов.
Замечание: Использование с круглыми скобками
Заключение одного аргумента в echo в круглые скобки не вызовет синтаксической ошибки и создаст синтаксис, который выглядит как обычный вызов функции. Однако это может ввести в заблуждение, потому что круглые скобки на самом деле являются частью выводимого выражения, а не частью самого синтаксиса echo .
echo( «привет» );
// также выведет «привет», потому что («привет») является корректным выражением
echo( 1 + 2 ) * 3 ;
// выведет «9»; круглые скобки приводят к тому, что сначала вычисляется 1+2, а затем 3*3
// оператор echo видит всё выражение как один аргумент
echo «привет» , » мир» ;
// выведет «привет мир»
echo( «привет» ), ( » мир» );
// выведет «привет мир»; круглые скобки являются частью каждого выражения
echo( «привет» , » мир» );
// Выбросит ошибку синтаксического анализа, потому что («привет», «мир») не является корректным выражением.
?>
Передача нескольких аргументов в echo может избежать осложнений, связанных с приоритетом оператора конкатенации в PHP. Например, оператор конкатенации имеет более высокий приоритет, чем тернарный оператор, а до PHP 8.0.0 имел тот же приоритет, что и сложение и вычитание:
// Ниже выражение ‘Привет, ‘ . isset($name) вычисляется первым
// и всегда имеет значение true, поэтому аргумент для echo всегда равен $name
echo ‘Привет, ‘ . isset( $name ) ? $name : ‘Джон Доу’ . ‘!’ ;
?php
// Предполагаемое поведение требует дополнительных скобок
echo ‘Привет, ‘ . (isset( $name ) ? $name : ‘Джон Доу’ ) . ‘!’ ;
// В PHP до 8.0.0 ниже выведется «2», а не «Сумма: 3».
echo ‘Сумма: ‘ . 1 + 2 ;
// Опять же, добавление круглых скобок обеспечивает предполагаемый порядок выполнения.
echo ‘Сумма: ‘ . ( 1 + 2 );
Если передано несколько аргументов, скобки не требуются для обеспечения приоритета, потому что каждое выражение является отдельным:
echo «Привет, » , isset( $name ) ? $name : «Джон Доу» , «!» ;
?php
Смотрите также
- print — Выводит строку
- printf() — Выводит отформатированную строку
- flush() — Сброс системного буфера вывода
- Способы работы со строками