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-кода. Полученный вывод можно использовать для повторного создания значения. Подходит для сериализации данных или сохранения конфигураций.
Показывает внутреннее представление переменной с учётом подсчёта ссылок. Полезен для глубокой отладки работы с памятью и ссылками.
- var_dump(): Основной инструмент отладки, показывает всё.
- print_r(): Когда нужен компактный вывод больших массивов/объектов.
- var_export(): Когда нужно получить валидный PHP-код переменной.
Ошибок как таковых функция не генерирует, но есть нюансы использования.
Прямой вывод на экран может испортить верстку или раскрыть служебную информацию.
<?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
// PHP 8: Объект вместо ресурса
$file = fopen('php://memory', 'r');
var_dump($file);
?>object(stream)#1 (0) {}
Расширенные примеры
<?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
$str = "123";
$int = 123;
var_dump($str, $int);
?>string(3) "123" int(123)
Захват результата в строку для логирования.
<?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;Нет встроенной единой функции. Для отладки обычно используют возможности IDE или выводят каждый член структуры отдельно.