W3docs

Операторы echo и print в PHP

Узнайте, чем отличаются echo и print в PHP, как выводить текст, переменные и выражения, и когда использовать каждый из операторов.

Вывод текста — это первое, что делает большинство PHP-программ, и PHP предоставляет для этого два инструмента: echo и print. На первый взгляд они взаимозаменяемы, и для повседневного вывода это действительно так — однако под капотом они не одинаковы. Оба являются языковыми конструкциями (а не функциями в строгом смысле), поэтому их можно вызывать как со скобками, так и без.

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

Оператор echo в PHP

Оператор echo выводит одну или несколько строк. Чаще всего он используется для вывода одного фрагмента текста:

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

php— editable, runs on the server

echo не возвращает значение. Строка выше сразу попадает в буфер вывода и отправляется в браузер (или в терминал — для CLI-скриптов).

Вывод переменных и выражений

Можно выводить переменные напрямую или формировать длинную строку с помощью оператора конкатенации . из раздела операторов:

Конкатенация строк через echo в PHP

php— editable, runs on the server

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

<?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

php— editable, runs on the server

Поскольку он возвращает 1, print иногда применяется в условных однострочниках вида $ok or print "failed";. На практике это редкость — большинство кода использует его так же, как echo.

Как и echo, print обрабатывает переменные и выражения:

Конкатенация строк через print в PHP

php— editable, runs on the server

Главное, что нужно помнить: print принимает ровно один аргумент. Написать print "a", "b"; нельзя.

Сравнение echo и print

Возможностьechoprint
Возвращает значениеНетВсегда возвращает 1
Можно использовать в выраженииНетДа ($x = print "hi";)
Несколько аргументовДа (echo $a, $b;)Нет — только один аргумент
СкоростьНезначительно быстрееНезначительно медленнее

Несколько практических выводов:

  • Разница в скорости незначительна для реальных приложений — это микрооптимизация, которую вы почти никогда не заметите. Выбирайте исходя из читаемости, а не производительности.
  • Используйте echo для обычного вывода. Это общепринятый выбор, поддерживающий несколько аргументов.
  • Прибегайте к print только тогда, когда вам действительно нужно его возвращаемое значение внутри выражения.

Заключение

echo и print — это языковые конструкции для отправки текста в вывод. Используйте echo по умолчанию — это идиоматический выбор, поддерживающий несколько аргументов — и применяйте print только тогда, когда конкретно нужно возвращаемое значение. Для дальнейшего изучения см. PHP-переменные, PHP-строки и типы данных PHP.

Практика

Практика
В чём разница между echo и print в PHP?
В чём разница между echo и print в PHP?
Was this page helpful?