W3docs

echo

Ключевое слово echo в PHP выводит одну или несколько строк. Разбираем синтаксис, отличия от print и частые ошибки новичков.

Оператор echo в PHP

echo — наиболее распространённый способ отправить вывод из PHP-скрипта в браузер (или консоль). Это языковая конструкция, а не полноценная функция, поэтому её часто используют без скобок. На этой странице рассмотрены синтаксис, отличия от print, сокращённый тег <?= ?> и типичные ошибки начинающих.

Если вы только знакомитесь с выводом данных в PHP, рекомендуем также прочитать PHP echo and print — сравнение обоих операторов, и PHP variables — чтобы разобраться со значениями, которые вы будете выводить.

Синтаксис

echo expression1, expression2, ...;
  • Аргументы разделяются запятыми.
  • Поскольку echo является языковой конструкцией, скобки необязательны. echo "Hi"; и echo("Hi"); работают одинаково — однако echo("a", "b"); вызовет синтаксическую ошибку, так как скобки допускают лишь один аргумент.

Базовый вывод

<?php

echo "Hello World!";        // Hello World!
echo "\n";                   // newline
echo "Hello", " ", "World!"; // Hello World!

Передача нескольких аргументов через запятую немного быстрее, чем формирование одной строки оператором конкатенации (.), поскольку PHP не нужно предварительно создавать объединённую строку.

Вывод переменных

<?php

$name = "John";
$age  = 30;

// Concatenation with the . operator
echo "My name is " . $name . " and I am " . $age . " years old.";

Внутри строк в двойных кавычках PHP также интерполирует переменные напрямую, что зачастую удобнее конкатенации:

<?php

$name = "John";
echo "Hello, $name!";        // Hello, John!
echo "Hello, {$name}san!";   // Hello, Johnsan! (braces clarify the variable name)

Строки в одинарных кавычках интерполяцию не выполняют — echo 'Hello, $name'; выведет буквально Hello, $name. Полные правила описаны в PHP strings.

«Попробуйте сами» недоступно для этого примера.

Сокращённый тег <?= ?>

При смешивании PHP с HTML запись <?= ?> является сокращением для <?php echo ?>. Она включена по умолчанию в PHP и считается идиоматическим способом вывода одного значения в шаблоне:

<p>Welcome, <?= $username ?>!</p>

<!-- equivalent to: -->
<p>Welcome, <?php echo $username; ?>!</p>

echo и print

Оба оператора выводят данные, но между ними есть различия:

Характеристикаechoprint
Несколько аргументовДа (через запятую)Нет (только один)
Возвращаемое значениеНетВсегда возвращает 1
Использование в выраженияхНетДа (например, $ok = print "Hi";)
СкоростьНемного быстрееНемного медленнее

Поскольку print возвращает 1, его можно использовать внутри выражения; echo — нельзя. Подробнее см. The PHP print statement.

Частые ошибки

  • Не возвращает значения. $x = echo "Hi"; — фатальная ошибка: echo нельзя присваивать или использовать в выражениях.
  • Скобки с несколькими аргументами не работают. echo("a", "b"); недопустимо; уберите скобки: echo "a", "b";.
  • Экранирование пользовательских данных. Прямой вывод непроверенных данных в HTML открывает уязвимость XSS. Передавайте их через htmlspecialchars(): echo htmlspecialchars($comment);.
  • PHP_EOL и "\n". Используйте константу PHP_EOL, когда нужен правильный символ переноса строки для текущей операционной системы (например, при выводе в консоль, а не в браузер).

Практика

Практика
Какой из вариантов является корректным использованием echo в PHP?
Какой из вариантов является корректным использованием echo в PHP?
Was this page helpful?