W3docs

print

Ключевое слово 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: 3

PHP_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.

Оба варианта практически взаимозаменяемы для простого вывода. Различия небольшие, но полезные:

Функциональностьprintecho
Возвращаемое значениевсегда 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) записывается как есть, поэтому сначала экранируйте ненадёжные данные.

Практика

Практика
Какие из следующих утверждений верны о функции print в PHP?
Какие из следующих утверждений верны о функции print в PHP?
Was this page helpful?