Ключевое слово print в PHP выводит строку в браузер или другой поток вывода. Узнайте о синтаксисе и применении print.
Конструкция PHP print
print выводит одну строку в тот поток вывода, в который PHP в данный момент пишет — обычно это браузер при запуске веб-страницы или терминал при запуске скрипта из командной строки. Несмотря на сходство с функцией, print является языковой конструкцией: она встроена в язык, принимает ровно один аргумент и всегда возвращает целое число 1.
Именно это единственное возвращаемое значение отличает print от echo и позволяет использовать его внутри более сложных выражений. В этой главе рассматривается синтаксис, отличие print от echo, когда важно возвращаемое значение, и распространённые способы применения.
Синтаксис
print "Hello, world!";Поскольку print является конструкцией, а не функцией, скобки необязательны. Оба варианта допустимы и ведут себя одинаково:
print "Hello, world!"; // without parentheses
print("Hello, world!"); // with parenthesesСкобки просто группируют аргумент; они не превращают print в вызов функции. Конструкция по-прежнему принимает только один аргумент — передать список через запятую, как позволяет echo, не получится.
Вывод переменных и выражений
print сначала вычисляет свой аргумент, поэтому можно передать переменную, конкатенированную строку или любое выражение, которое приводится к строковому значению. Переменные внутри строк в двойных кавычках интерполируются автоматически:
<?php
$name = "John";
// Interpolation inside a double-quoted string
print "Hello, $name!" . PHP_EOL; // Hello, John!
// Concatenation with the . operator
print "Sum: " . (1 + 2) . PHP_EOL; // Sum: 3PHP_EOL — символ перевода строки для текущей платформы, удобный в консольных скриптах, чтобы каждый оператор выводился на отдельной строке. (Оператор конкатенации . описан в разделе PHP Operators, правила интерполяции — в разделе PHP Variables.)
Использование возвращаемого значения
Каждый вызов print возвращает 1. Само по себе это кажется бесполезным, но позволяет использовать print там, где ожидается значение — например, внутри присваивания или логического выражения:
<?php
// Assigning the result (always 1)
$result = print "Success" . PHP_EOL;
echo $result . PHP_EOL; // 1
// Using print inside a ternary expression
$loggedIn = false;
$loggedIn ? print "Welcome back" : print "Please log in";echo нельзя использовать таким образом: $x = echo "hi"; — синтаксическая ошибка, потому что echo ничего не возвращает. Если вывод нужен как часть выражения, используйте print.
print vs echo
Оба варианта практически взаимозаменяемы для простого вывода. Различия небольшие, но полезные:
| Функциональность | print | echo |
|---|---|---|
| Возвращаемое значение | всегда 1 | нет (нельзя использовать в выражениях) |
| Количество аргументов | ровно один | один или несколько (через запятую) |
| Относительная скорость | немного медленнее | немного быстрее |
На практике оба варианта достаточно быстры, и разница в скорости не имеет значения. Используйте echo, когда нужно вывести несколько значений сразу; используйте print, когда нужно возвращаемое значение. Подробное сравнение — в разделе PHP echo vs print.
Вывод HTML
Как и echo, print просто записывает переданную строку, поэтому HTML-разметка передаётся прямо на страницу:
<?php
$title = "Welcome";
print "<h1>$title</h1>";
print "<p>This paragraph was generated with <code>print</code>.</p>";Браузер отображает результат как обычный HTML. Не забывайте экранировать данные, введённые пользователем (например, с помощью htmlspecialchars()), перед выводом, чтобы избежать межсайтового скриптинга.
Итоги
print— языковая конструкция, которая выводит одну строку и всегда возвращает1.- Скобки необязательны —
print "x"иprint("x")эквивалентны. - Возвращаемое значение позволяет использовать
printвнутри выражений и присваиваний, в отличие отecho. - Используйте
echoдля нескольких значений; используйтеprint, когда нужно это возвращаемое значение. - Вывод (включая HTML) записывается как есть, поэтому сначала экранируйте ненадёжные данные.