В чем разница между 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экспортирует больше информации, такой как тип данных и размер элементов.