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
Оба оператора выводят данные, но между ними есть различия:
| Характеристика | echo | print |
|---|---|---|
| Несколько аргументов | Да (через запятую) | Нет (только один) |
| Возвращаемое значение | Нет | Всегда возвращает 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, когда нужен правильный символ переноса строки для текущей операционной системы (например, при выводе в консоль, а не в браузер).