1

Var dump: примеры (PHP)

Использование var_dump для анализа данных в PHP
Раздел: Отладка
var_dump(mixed value [, mixed ...values]): void

Функция var_dump() в PHP предназначена для отображения структурированной информации об одной или нескольких переменных. Она показывает тип и значение данных. Её основное применение — отладка скриптов.

Назначение

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

Аргументы

Функция имеет переменное количество аргументов.

  • $value (обязательный): Первая переменная для анализа.
  • ...$values (опционально): Дополнительные переменные для анализа. Можно передавать любое количество.

Функция всегда возвращает значение null. Её результат напрямую выводится в буфер вывода.

Примеры использования

Простой вывод переменных

Анализ одной переменной разных типов:

<?php
var_dump(42); // integer
var_dump(3.14); // float
var_dump("Hello"); // string
var_dump(true); // bool
var_dump(null); // NULL
?>
int(42)
float(3.14)
string(5) "Hello"
bool(true)
NULL
Вывод нескольких аргументов
<?php
$a = 10;
$b = [1, 2];
var_dump($a, $b);
?>
int(10)
array(2) {
  [0]=>
  int(1)
  [1]=>
  int(2)
}
Вывод массива и объекта
<?php
$arr = ['name' => 'Иван', 'age' => 30];
class Person {}
$obj = new Person();
var_dump($arr, $obj);
?>
array(2) {
  ["name"]=>
  string(8) "Иван"
  ["age"]=>
  int(30)
}
object(Person)#1 (0) {
}

Выводит информацию о переменной в удобочитаемом формате. Для массивов и объектов результат менее детальный, чем у var_dump(). Может возвращать результат как строку (второй параметр — true). Лучше использовать для простого просмотра больших структур.

Выводит или возвращает строковое представление переменной в виде корректного PHP-кода. Полученный вывод можно использовать для повторного создания значения. Подходит для сериализации данных или сохранения конфигураций.

debug_zval_dump()

Показывает внутреннее представление переменной с учётом подсчёта ссылок. Полезен для глубокой отладки работы с памятью и ссылками.

Выбор функции
  • var_dump(): Основной инструмент отладки, показывает всё.
  • print_r(): Когда нужен компактный вывод больших массивов/объектов.
  • var_export(): Когда нужно получить валидный PHP-код переменной.
Ошибки и особенности

Ошибок как таковых функция не генерирует, но есть нюансы использования.

Вывод в production-среде

Прямой вывод на экран может испортить верстку или раскрыть служебную информацию.

<?php
// Включено в HTML-странице
var_dump($_SERVER);
?>
(Вывод массива $_SERVER прервет отображение страницы)

Решение: использовать буферизацию вывода или выводить в лог.

Рекурсивные структуры

При выводе массива или объекта, содержащего ссылку на самого себя, var_dump() попытается вывести всё, что может привести к переполнению.

<?php
$a = [];
$a[] = &$a;
var_dump($a);
?>
array(1) {
  [0]=>
  &array(1) {
    [0]=>
    *RECURSION*
  }
}

PHP обнаруживает рекурсию и помечает её.

Изменения в PHP 8
  • Стандартизация вывода. Формат вывода для некоторых типов стал более единообразным.
  • Вывод объектов. Улучшен вывод свойств объектов, включая приватные и защищённые, особенно при наследовании. Свойства выводятся в порядке объявления в классе.
  • Вывод ресурсов. В PHP 8 ресурсы как тип были в значительной степени заменены объектами. Вывод объектов-ресурсов стал более информативным.
<?php
// PHP 8: Объект вместо ресурса
$file = fopen('php://memory', 'r');
var_dump($file);
?>
object(stream)#1 (0) {}

Расширенные примеры

Анализ вложенных структур
Пример php
<?php
$complex = [
    'number' => 1,
    'text' => "строка",
    'inner' => [
        'flag' => false,
        'list' => [10, 20]
    ],
    'object' => new DateTime()
];
var_dump($complex);
?>
array(4) {
  ["number"]=>
  int(1)
  ["text"]=>
  string(12) "строка"
  ["inner"]=>
  array(2) {
    ["flag"]=>
    bool(false)
    ["list"]=>
    array(2) {
      [0]=>
      int(10)
      [1]=>
      int(20)
    }
  }
  ["object"]=>
  object(DateTime)#1 (3) {
    ["date"]=>
    string(26) "2023-11-15 12:00:00.000000"
    ["timezone_type"]=>
    int(3)
    ["timezone"]=>
    string(3) "UTC"
  }
}
Сравнение типов
Пример php
<?php
$str = "123";
$int = 123;
var_dump($str, $int);
?>
string(3) "123"
int(123)
Вывод с буферизацией

Захват результата в строку для логирования.

Пример php
<?php
ob_start();
var_dump(["test"]);
$result = ob_get_clean();
file_put_contents('debug.log', $result);
echo 'Вывод завершен.';
?>
Вывод завершен.

Var dump в Python

Функция print() выводит строковое представление. Модуль pprint (pprint.pprint()) форматирует сложные структуры. Для деталей о типе используется type().

import pprint
data = {'key': [1, 2, 3]}
pprint.pprint(data)
print(type(data))
{'key': [1, 2, 3]}
<class 'dict'>

Var dump в Javascript

console.dir() показывает интерактивный список свойств объекта. console.log() — основной метод вывода. Для детального форматирования используют JSON.stringify(obj, null, 2).

let obj = {a: 1, b: {c: 2}};
console.dir(obj);
console.log(JSON.stringify(obj, null, 2));

Var dump в MySQL

Прямого аналога нет. Для отладки запросов используют оператор SELECT для вывода данных или команды SHOW для метаинформации.

SHOW COLUMNS FROM users;
C++

Нет встроенной единой функции. Для отладки обычно используют возможности IDE или выводят каждый член структуры отдельно.

PHP var_dump function comments

En
Var dump Dumps information about a variable