В чем разница между var_dump
, var_export
и print_r
?
В чем разница между var_dump
, var_export
и print_r
?
Ответы:
var_dump предназначен для отладки. var_dump
всегда печатает результат.
// var_dump(array('', false, 42, array('42')));
array(4) {
[0]=> string(0) ""
[1]=> bool(false)
[2]=> int(42)
[3]=> array(1) {[0]=>string(2) "42")}
}
print_r также используется для отладки, но не включает тип члена. Это хорошая идея, если вы знаете типы элементов в вашем массиве, но в противном случае можете ввести в заблуждение. print_r
по умолчанию выводит результат, но разрешает возврат в виде строки с использованием необязательного$return
параметра.
Array (
[0] =>
[1] =>
[2] => 42
[3] => Array ([0] => 42)
)
var_export печатает действительный код PHP. Полезно, если вы рассчитали некоторые значения и хотите, чтобы результаты были постоянными в другом скрипте. Обратите внимание, чтоvar_export
не может обрабатывать ссылочные циклы / рекурсивные массивы, тогда какvar_dump
иprint_r
проверяйте их. var_export
по умолчанию выводит результат, но разрешает возврат в виде строки с использованием необязательного$return
параметра.
array (
0 => '',
1 => false,
2 => 42,
3 => array (0 => '42',),
)
Лично я считаю, что var_export
это лучший компромисс краткости и точности.
var_export
силу своей природы он умрет ужасной рекурсивной смертью, ну, рекурсивными массивами. print_r
и var_dump
(хотя я не совсем уверен в последнем, поскольку обычно не использую его) не имеет этой проблемы. Так что не надо var_export($_GLOBALS);
, например (который содержит самого себя). :)
var_dump
вывод. Жаль, что он не позволяет возвращать вывод в виде строки. Таким образом, я могу понять мнение @ iconoclast в комментарии выше. Но для меня приемлемо выбирать var_export
из var_dump
этого варианта использования. Для полноты обратите внимание на этот связанный запрос функции .
var_dump
и var_export
относитесь так (из руководства )
var_export () получает структурированную информацию о данной переменной. Он похож на var_dump () с одним исключением: возвращаемое представление является допустимым кодом PHP.
Они отличаются от того, print_r
что var_dump
экспортирует больше информации, такой как тип данных и размер элементов.