print_r()
Функция print_r() в PHP выводит удобочитаемое представление переменной. Незаменима для отладки массивов и объектов.
Введение
print_r() — встроенная функция PHP, которая выводит удобочитаемое представление переменной. Для скалярных значений (строк, чисел, булевых) она просто печатает значение, однако по-настоящему раскрывается при работе с массивами и объектами: она выстраивает ключи и значения в виде отступленного дерева, так что структуру можно оценить с первого взгляда.
Это одна из трёх основных функций отладки в PHP наряду с var_dump() и var_export(). Используйте print_r(), когда нужно быстро и наглядно посмотреть, что находится внутри переменной.
Синтаксис
print_r(mixed $value, bool $return = false): string|true| Параметр | Описание |
|---|---|
$value | Переменная для отображения. Любой тип — скаляр, массив или объект. |
$return | Необязательный. При значении false (по умолчанию) вывод печатается напрямую. При true вывод возвращается в виде строки вместо печати, что позволяет сохранить его в переменную. |
Возвращаемое значение зависит от $return: по умолчанию (false) возвращает true; при true возвращает отформатированную строку.
Вывод массива
print_r() отображает вложенные массивы в виде отступленного дерева, что упрощает чтение многоуровневых данных:
Каждый ключ отображается как [key] => value, а вложенный массив roles выводится с отступом под родительским элементом:
Array
(
[name] => Alice
[age] => 30
[roles] => Array
(
[0] => admin
[1] => editor
)
)Получение вывода в виде строки
Передайте true вторым аргументом, чтобы получить отформатированный текст вместо его печати. Это удобно для записи структуры в лог-файл, включения в сообщение об ошибке или оборачивания в HTML:
<?php
$data = ["x" => 1, "y" => 2];
$text = print_r($data, true); // captured, not printed
error_log($text); // e.g. send it to the log
echo strtoupper(substr($text, 0, 5)); // prints: ARRAY
?>Совет: оберните в <pre> для браузера
На веб-странице браузеры сворачивают отступы и переносы строк, на которые опирается print_r(), поэтому вывод выглядит одной сплошной строкой. Оберните его в тег <pre> (или захватите с помощью $return и выведите внутри <pre>), чтобы сохранить читаемое форматирование:
<?php
echo "<pre>";
print_r($person);
echo "</pre>";
?>print_r() vs. var_dump() vs. var_export()
Все три функции позволяют инспектировать переменные, но решают разные задачи:
print_r()— наиболее читаемый вывод. Лучший выбор для быстрой визуальной проверки структуры. Не показывает типы данных и длины строк.var_dump()— показывает тип и размер каждого значения (int(30),string(5) "Alice") и может выводить несколько переменных сразу. Лучший выбор, когда важен тип (например, для различения0,"0",falseиnull).var_export()— выводит валидный PHP-код, воссоздающий переменную. Лучший выбор, когда нужно значение, которое можно вставить обратно в исходный код или закешировать.
Если нужно узнать только тип одной переменной, gettype() будет более прямолинейным решением.
Заключение
print_r() — самый дружелюбный из инструментов инспекции PHP: он выводит массивы и объекты в виде аккуратного отступленного дерева, которое легко просматривать при отладке. Используйте режим по умолчанию, чтобы сразу вывести переменную, передайте true, чтобы захватить результат в виде строки, и оберните вызов в <pre> при просмотре в браузере. Когда нужны типы и размеры — переходите к var_dump(); когда нужен повторно используемый PHP-код — используйте var_export().