Menu

PHP echo: вывод текста, переменных и HTML

echo выводит одну или несколько строк: echo "Hello, $name"; или echo $a, $b;. Это обычный способ отправить текст или HTML на страницу. print делает то же с одним значением и возвращает 1; <?= $x ?> это короткая форма внутри HTML.

На этой странице есть исполняемые редакторы: меняйте, запускайте и сразу видите результат.

echo выводит текст. Напишите echo "Hello";, чтобы вывести строку, echo "Hello, $name";, чтобы подставить переменную, и echo $a, $b;, чтобы напечатать несколько значений подряд. Всё, что выводит echo, становится страницей в браузере или текстом в терминале.

В первой строке используется интерполяция (переменная стоит внутри двойных кавычек), во второй строки склеиваются оператором ., а в третьей передаются три значения через запятую. Все три варианта дают одинаковый по виду результат.

Вывод HTML через echo

На веб-странице echo обычно выводит HTML. Браузер получает текст и отрисовывает теги. Нажмите Run, и вкладка Page покажет результат:

В последней строке используются одинарные кавычки, поэтому двойные кавычки в class="note" не нужно экранировать. Внутри одинарных кавычек переменные не подставляются, так что используйте их для неизменного текста. Если значение пришло от посетителя (из формы, из URL), выводите его через htmlspecialchars, чтобы оно не смогло внедрить HTML; подробнее на странице про htmlspecialchars.

Короткий тег echo <?=

Внутри HTML-файла <?= $value ?> это короткая форма <?php echo $value; ?>. С ней шаблоны остаются читаемыми:

Короткий тег echo доступен всегда. Другой короткий тег, <? без php, зависит от настройки, и пользоваться им не стоит.

Несколько значений и перенос строки

echo не добавляет перенос строки. В терминале добавьте "\n" (в двойных кавычках) или константу PHP_EOL. В HTML перенос строки в исходнике ничего видимого не делает; используйте <br> или отдельные элементы.

Запятые и точки дают одинаковый вывод. С запятыми echo печатает значения по очереди; с точками PHP сначала собирает одну строку, а потом выводит её. Переносам строк посвящена отдельная страница: перенос строки в PHP.

echo и print

print это старший родственник. Он выводит одно значение и всегда возвращает 1, поэтому может стоять внутри выражения. echo принимает любое количество значений и ничего не возвращает.

echoprint
Значенияодно или несколько, через запятуюровно одно
Возвращаетничего (это инструкция)1
Внутри выражениянельзяможно, $ok = print "x";
Где используетсяпочти вездередко

printf устроен иначе: он форматирует значения по шаблону, например printf("%05.2f", 3.14159), и описан на странице про sprintf.

Вывод массива или объекта

echo выводит только строки и значения, которые приводятся к строке (числа, логические значения, null). Массив к строке не приводится. Ваш PHP выдаст предупреждение и слово Array:

PHP Warning:  Array to string conversion in /home/index.php on line 3
Array

Чтобы показать содержимое, выберите подходящую функцию:

С объектом строже: если в его классе не определён __toString(), echo $object; останавливает скрипт с ошибкой Error: Object of class User could not be converted to string. Логические значения тоже часто удивляют: echo true; выводит 1, а echo false; не выводит ничего. Когда нужно увидеть точный тип и значение, используйте var_dump($value).

Частая ошибка: echo со скобками и запятыми

Поскольку echo похож на функцию, пишут echo("a", "b");. Это ошибка разбора, потому что скобки охватывают одно выражение:

PHP Parse error:  syntax error, unexpected token "," in /home/index.php on line 2

Уберите скобки (echo "a", "b";) или склейте значения (echo("a" . "b");). То же касается print, который никогда не принимает второе значение, со скобками или без.

Часто задаваемые вопросы

Чем echo отличается от print в PHP?

Оба выводят строки. echo принимает несколько значений через запятую (echo $a, $b;) и ничего не возвращает; print принимает ровно одно значение и возвращает 1, поэтому его можно использовать внутри выражения. На практике почти везде используют echo.

Нужны ли скобки у echo?

Нет. echo это языковая конструкция, а не функция, поэтому обычная форма echo "Hi";. echo("Hi"); работает, потому что скобки лишь группируют одно выражение, а вот echo("a", "b"); вызывает ошибку разбора.

Почему echo false ничего не выводит?

echo приводит значение к строке, и false превращается в пустую строку "", а true в "1". Чтобы увидеть само логическое значение, используйте var_dump($x); (выведет bool(false)) или echo var_export($x, true); (выведет false).

Что означает <?= в PHP?

<?= $value ?> это короткий тег echo, полностью равный <?php echo $value; ?>. Начиная с PHP 5.4 он всегда включён и обычно используется для вывода значений внутри HTML-шаблонов.

Иллюстрация языков программирования Coddy

Учитесь программировать с Coddy

НАЧАТЬ