Операторы echo и print в PHP
Узнайте, чем отличаются echo и print в PHP, как выводить текст, переменные и выражения, и когда использовать каждый из операторов.
Вывод текста — это первое, что делает большинство PHP-программ, и PHP предоставляет для этого два инструмента: echo и print. На первый взгляд они взаимозаменяемы, и для повседневного вывода это действительно так — однако под капотом они не одинаковы. Оба являются языковыми конструкциями (а не функциями в строгом смысле), поэтому их можно вызывать как со скобками, так и без.
В этой главе показано, как работает каждая из них, чем они отличаются и когда что применять. Если вы только начинаете работать с выводом значений, рекомендуется предварительно прочитать о PHP-переменных и PHP-строках, поскольку echo и print — это способы их отображения.
Оператор echo в PHP
Оператор echo выводит одну или несколько строк. Чаще всего он используется для вывода одного фрагмента текста:
Пример использования echo в PHP
echo не возвращает значение. Строка выше сразу попадает в буфер вывода и отправляется в браузер (или в терминал — для CLI-скриптов).
Вывод переменных и выражений
Можно выводить переменные напрямую или формировать длинную строку с помощью оператора конкатенации . из раздела операторов:
Конкатенация строк через echo в PHP
Внутри строк в двойных кавычках переменные интерполируются автоматически, поэтому конкатенация часто не нужна:
<?php
$num = 5;
echo "The value of num is: $num"; // The value of num is: 5
echo 'The value of num is: $num'; // The value of num is: $numОдинарные кавычки воспринимаются буквально — $num выводится как есть. Подробные правила описаны в разделе PHP-строки.
Передача нескольких аргументов
Возможность, которой у print нет: echo принимает несколько аргументов, разделённых запятыми, и выводит их по порядку. Это может быть чуть быстрее конкатенации, поскольку PHP не создаёт одну большую строку заранее:
<?php
echo "Red", " ", "Green", " ", "Blue", "\n";
// Output: Red Green BlueПримечание: форма с запятыми работает только при вызове
echoбез скобок.echo("a", "b")является синтаксической ошибкой.
Короткий тег echo
При встраивании PHP в HTML конструкция <?= ... ?> является сокращением для <?php echo ... ?> — удобно в шаблонах:
<p>Welcome, <?= $name ?>!</p>Оператор print в PHP
print также выводит текст, но с одной важной особенностью: он всегда возвращает значение 1. Это возвращаемое значение позволяет использовать print внутри выражений, где echo привёл бы к синтаксической ошибке:
Пример использования функции print в PHP
Поскольку он возвращает 1, print иногда применяется в условных однострочниках вида $ok or print "failed";. На практике это редкость — большинство кода использует его так же, как echo.
Как и echo, print обрабатывает переменные и выражения:
Конкатенация строк через print в PHP
Главное, что нужно помнить: print принимает ровно один аргумент. Написать print "a", "b"; нельзя.
Сравнение echo и print
| Возможность | echo | print |
|---|---|---|
| Возвращает значение | Нет | Всегда возвращает 1 |
| Можно использовать в выражении | Нет | Да ($x = print "hi";) |
| Несколько аргументов | Да (echo $a, $b;) | Нет — только один аргумент |
| Скорость | Незначительно быстрее | Незначительно медленнее |
Несколько практических выводов:
- Разница в скорости незначительна для реальных приложений — это микрооптимизация, которую вы почти никогда не заметите. Выбирайте исходя из читаемости, а не производительности.
- Используйте
echoдля обычного вывода. Это общепринятый выбор, поддерживающий несколько аргументов. - Прибегайте к
printтолько тогда, когда вам действительно нужно его возвращаемое значение внутри выражения.
Заключение
echo и print — это языковые конструкции для отправки текста в вывод. Используйте echo по умолчанию — это идиоматический выбор, поддерживающий несколько аргументов — и применяйте print только тогда, когда конкретно нужно возвращаемое значение. Для дальнейшего изучения см. PHP-переменные, PHP-строки и типы данных PHP.