Print r: примеры (PHP)
print_r(mixed $value, bool $return = false): string|boolФункция print_r() выводит информацию о переменной в удобочитаемом виде. Она применяется для отладки скриптов, позволяя быстро просмотреть структуру и содержимое массивов, объектов и других типов данных.
Функция принимает до трех параметров:
- $value (обязательный) — переменная, информацию о которой нужно вывести.
- $return (необязательный, по умолчанию false) — если установлен в true, функция вернет строку с данными вместо их вывода в поток.
- $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] => Иван
)<?php
$array = ['a' => 1, 'b' => 2];
echo print_r($array, true, PRINT_R_FORCE_OBJECT);
?>stdClass Object
(
[a] => 1
[b] => 2
)В 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* для избежания бесконечного вывода.
Добавлен третий аргумент $flags. В текущей версии доступна только одна константа PRINT_R_FORCE_OBJECT, которая заставляет функцию выводить массивы как объекты класса stdClass.
Функция принимала только два аргумента. Флаг PRINT_R_FORCE_OBJECT ранее был доступен только для функции var_export() с определенными настройками.
<?php
class User {
public $name = 'Мария';
private $age = 28;
}
print_r(new User());
?>User Object
(
[name] => Мария
[User age:private] => 28
)<?php
$complex = [
'server' => ['Apache', 'Nginx'],
'languages' => ['PHP', 'Python'],
];
print_r($complex);
?>Array
(
[server] => Array
(
[0] => Apache
[1] => Nginx
)
[languages] => Array
(
[0] => PHP
[1] => Python
)
)<?php
$data = ['цвет' => 'красный', 'код' => '#FF0000'];
echo '<pre>' . print_r($data, true) . '</pre>';
?><pre>Array
(
[цвет] => красный
[код] => #FF0000
)
</pre><?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
)