Print r: примеры (PHP)

Использование print_r для анализа данных в PHP
Раздел: Отладка
print_r(mixed $value, bool $return = false): string|bool
Функция print_r в PHP

Функция print_r() выводит информацию о переменной в удобочитаемом виде. Она применяется для отладки скриптов, позволяя быстро просмотреть структуру и содержимое массивов, объектов и других типов данных.

Аргументы функции

Функция принимает до трех параметров:

  1. $value (обязательный) — переменная, информацию о которой нужно вывести.
  2. $return (необязательный, по умолчанию false) — если установлен в true, функция вернет строку с данными вместо их вывода в поток.
  3. $flags (необязательный, добавлен в PHP 8.1.0) — битовая маска констант, изменяющих поведение функции. Доступна константа PRINT_R_FORCE_OBJECT, которая заставляет функцию выводить массив как объект.
Основные примеры использования
Вывод массива
<?php
$array = ['яблоко', 'апельсин', 'груша'];
print_r($array);
?>
Array
(
    [0] => яблоко
    [1] => апельсин
    [2] => груша
)
Возврат результата в строку
<?php
$data = ['id' => 5, 'name' => 'Иван'];
$result = print_r($data, true);
echo $result;
?>
Array
(
    [id] => 5
    [name] => Иван
)
Использование флага PRINT_R_FORCE_OBJECT
<?php
$array = ['a' => 1, 'b' => 2];
echo print_r($array, true, PRINT_R_FORCE_OBJECT);
?>
stdClass Object
(
    [a] => 1
    [b] => 2
)
Похожие функции в PHP

В PHP существуют другие функции для вывода отладочной информации:

Выводит подробную информацию о переменной, включая тип данных и размер. Подходит для глубокого анализа.

Выводит или возвращает строковое представление переменной в виде валидного PHP-кода. Удобна для сохранения данных.

Выбор функции
  • print_r() — для быстрого просмотра структуры данных.
  • var_dump() — когда нужны детали о типах и размерах.
  • var_export() — для генерации кода, который можно повторно использовать.
Аналоги в других языках

Print r в Python

import pprint
data = {'name': 'Алексей', 'age': 30}
pprint.pprint(data)
{'name': 'Алексей', 'age': 30}

Модуль pprint обеспечивает красивое форматирование. Аналогом простого вывода является print(), но для структур данных repr() или str().

Print r в Javascript

console.dir({id: 1, title: 'Книга'});
// или
console.log(JSON.stringify({id: 1, title: 'Книга'}, null, 2));
Object
  id: 1
  title: "Книга"

Метод console.dir() выводит иерархический список свойств объекта. JSON.stringify() с аргументами позволяет получить отформатированную строку.

Print r в MySQL

В MySQL нет прямой аналогии, но для отладки запросов используют операторы SELECT или SHOW.

Типичные ошибки
Попытка вывода ресурса
<?php
$file = fopen('test.txt', 'r');
print_r($file);
?>
Resource id #3

Функция не показывает детали ресурсов, только их идентификатор.

Рекурсивные структуры
<?php
$a = [];
$a['self'] = &$a;
print_r($a);
?>
Array
(
    [self] => Array
        *RECURSION*
)

При циклических ссылках вывод отмечается пометкой *RECURSION* для избежания бесконечного вывода.

Изменения в версиях PHP
PHP 8.1.0

Добавлен третий аргумент $flags. В текущей версии доступна только одна константа PRINT_R_FORCE_OBJECT, которая заставляет функцию выводить массивы как объекты класса stdClass.

PHP 7.4.0 и ранее

Функция принимала только два аргумента. Флаг PRINT_R_FORCE_OBJECT ранее был доступен только для функции var_export() с определенными настройками.

Расширенные примеры
Вывод объекта
Пример php
<?php
class User {
    public $name = 'Мария';
    private $age = 28;
}
print_r(new User());
?>
User Object
(
    [name] => Мария
    [User age:private] => 28
)
Вложенные структуры
Пример php
<?php
$complex = [
    'server' => ['Apache', 'Nginx'],
    'languages' => ['PHP', 'Python'],
];
print_r($complex);
?>
Array
(
    [server] => Array
        (
            [0] => Apache
            [1] => Nginx
        )
    [languages] => Array
        (
            [0] => PHP
            [1] => Python
        )
)
Использование в комбинации с HTML
Пример php
<?php
$data = ['цвет' => 'красный', 'код' => '#FF0000'];
echo '<pre>' . print_r($data, true) . '</pre>';
?>
<pre>Array
(
    [цвет] => красный
    [код] => #FF0000
)
</pre>
Обработка результата как строки
Пример php
<?php
$array = [1, 2, 3];
$output = print_r($array, true);
file_put_contents('log.txt', $output, FILE_APPEND);
?>

Содержимое файла log.txt после выполнения:

Array
(
    [0] => 1
    [1] => 2
    [2] => 3
)

PHP print_r function comments

En
Print r Prints human-readable information about a variable