print()
Статья о функции PHP print(), которая выводит строку. Она схожа с функцией echo() в PHP. Узнайте синтаксис и отличия.
print — это языковая конструкция PHP, которая выводит строку. Это один из наиболее распространённых способов отправки текста в браузер или терминал наряду с echo. На этой странице рассматривается синтаксис print, единственное отличие от echo (возвращаемое значение), поведение скобок и типичные ловушки.
Языковая конструкция — не функция — означает, что print является частью грамматики языка. На практике именно поэтому можно писать print "x" без скобок, как и с echo.
Синтаксис
int print(string $expression)print принимает один аргумент, $expression, который преобразуется в строку и записывается в вывод. Он всегда возвращает 1, поэтому может использоваться в более крупных выражениях там, где echo не может.
Поскольку скобки необязательны, все следующие варианты допустимы:
print "Hello, World!";
print("Hello, World!");
print "Sum is " . (2 + 3);Базовый пример
Вывод:
Hello, World!print vs. echo
print и echo выглядят почти одинаково, но между ними есть два реальных отличия:
echo | print | |
|---|---|---|
| Возвращаемое значение | нет (ничего не возвращает) | всегда 1 |
| Несколько аргументов | да — echo $a, $b; | нет — только один аргумент |
| Скорость | незначительно быстрее | незначительно медленнее |
Различия невелики, поэтому большинство проектов выбирают одну конструкцию и придерживаются её. Используйте echo, когда нужно вывести несколько значений одновременно; прибегайте к print только тогда, когда нужно возвращаемое значение внутри выражения. Для сравнения смотрите echo и print в PHP.
<?php
// echo can take several arguments separated by commas
echo "a", "b", "c"; // abc
// print cannot — this is a syntax error:
// print "a", "b";
?>Использование возвращаемого значения
Поскольку print возвращает 1, его можно использовать там, где ожидается выражение. Это иногда удобно в условном выражении или тернарном операторе, где echo не скомпилируется:
<?php
$loggedIn = true;
// Ternary: the print runs and evaluates to 1, but we only care about the side effect.
$loggedIn
? print("Welcome back!\n")
: print("Please sign in.\n");
?>Вывод:
Welcome back!Этот паттерн редко встречается в реальном коде — обычное if/else с echo гораздо понятнее — но он объясняет, зачем print вообще возвращает значение.
Вывод переменных и HTML
print выводит любую строку, которую вы формируете, включая HTML. Интерполяция переменных внутри строки в двойных кавычках — идиоматический способ смешивать текст и данные:
<?php
$user = "Ada";
print "<p>Hello, $user!</p>\n";
print 'Single quotes do NOT interpolate: $user' . "\n";
?>Вывод:
<p>Hello, Ada!</p>
Single quotes do NOT interpolate: $userОбратите внимание на различие: двойные кавычки ("...") раскрывают $user, одинарные кавычки ('...') выводят его буквально.
Типичные ловушки
printне предназначен для массивов и объектов. Передача массива выводит буквальное словоArrayи вызывает предупреждение. Для проверки структурированных данных используйтеprint_r()илиvar_dump().- Вывод ничего не экранирует.
printзаписывает необработанный текст. При выводе пользовательского ввода в HTML оборачивайте его вhtmlspecialchars(), чтобы избежать XSS. - Для форматированного вывода предпочтительнее
printf. Если нужны отступы, форматирование чисел или заполнители, подходящими инструментами являютсяprintf()иsprintf().
Итоги
print выводит одну строку, всегда возвращает 1 и принимает необязательные скобки. Для обычного вывода он взаимозаменяем с echo; единственная причина предпочесть его — когда нужно его возвращаемое значение внутри выражения. Для отладки массивов и объектов переходите к print_r() или var_dump(); для форматированных строк используйте printf().