echo

(PHP 4, PHP 5, PHP 7, PHP 8)

echoВыводит одну или более строк

Описание

echo(string ...$expressions): void

Выводит одно или несколько выражений без дополнительных символов новой строки или пробелов.

На самом деле, echo - это не функция, а языковая конструкция. Её аргументы - это список выражений, следующих за ключевым словом echo, разделённых запятыми и не ограниченных круглыми скобками. В отличие от некоторых других языковых конструкций, echo не имеет никакого возвращаемого значения, поэтому её нельзя использовать в контексте выражения.

echo имеет также краткую форму, представляющую собой знак равенства, следующий непосредственно за открывающим тегом. Этот сокращённый синтаксис работает даже с отключённым параметром конфигурации short_open_tag.

У меня есть <?=$foo?> foo.

Единственное отличие от print в том, что echo принимает несколько аргументов и не имеет возвращаемого значения.

Список параметров

expressions

Одно или несколько строковых выражений для вывода, разделённых запятыми. Нестроковые значения будут преобразованы в строки, даже если включена директива strict_types.

Возвращаемые значения

Функция не возвращает значения после выполнения.

Примеры

Пример #1 Примеры использования echo

<?php
echo "echo не требует скобок.";

// Строки можно передавать по отдельности как несколько аргументов или
// объединять вместе и передавать как один аргумент.
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.

<?php
echo "привет";
// выведет "привет"

echo("привет");
// также выведет "привет", потому что ("привет") является корректным выражением

echo(1 + 2) * 3;
// выведет "9"; круглые скобки приводят к тому, что сначала вычисляется 1+2, а затем 3*3
// оператор echo видит всё выражение как один аргумент

echo "привет", " мир";
// выведет "привет мир"

echo("привет"), (" мир");
// выведет "привет мир"; круглые скобки являются частью каждого выражения

echo("привет", " мир");
// Выбросит ошибку синтаксического анализа, потому что ("привет", "мир") не является корректным выражением.
?>

Подсказка

Передача нескольких аргументов в echo может избежать осложнений, связанных с приоритетом оператора конкатенации в PHP. Например, оператор конкатенации имеет более высокий приоритет, чем тернарный оператор, а до PHP 8.0.0 имел тот же приоритет, что и сложение и вычитание:

<?php
// Ниже выражение 'Привет, ' . isset($name) вычисляется первым
// и всегда имеет значение true, поэтому аргумент для echo всегда равен $name
echo 'Привет, ' . isset($name) ? $name : 'Джон Доу' . '!';

// Предполагаемое поведение требует дополнительных скобок
echo 'Привет, ' . (isset($name) ? $name : 'Джон Доу') . '!';

// В PHP до 8.0.0 ниже выведется "2", а не "Сумма: 3".
echo 'Сумма: ' . 1 + 2;

// Опять же, добавление круглых скобок обеспечивает предполагаемый порядок выполнения.
echo 'Сумма: ' . (1 + 2);

Если передано несколько аргументов, скобки не требуются для обеспечения приоритета, потому что каждое выражение является отдельным:

<?php
echo "Привет, ", isset($name) ? $name : "Джон Доу", "!";

echo
"Сумма: ", 1 + 2;

Смотрите также