W3docs

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);

Базовый пример

php— editable, runs on the server

Вывод:

Hello, World!

print и echo выглядят почти одинаково, но между ними есть два реальных отличия:

echoprint
Возвращаемое значениенет (ничего не возвращает)всегда 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().

Практика

Практика
Какие способы вывода строки в PHP упоминаются в статье на w3docs?
Какие способы вывода строки в PHP упоминаются в статье на w3docs?
Was this page helpful?