В чем разница между 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 => '', 2 => false, 2 => 42, 3 => array (0 => '42',), )
Лично я считаю, что var_export
– лучший компромисс лаконичной и точной.
var_dump
и var_export
относятся как это (из руководства )
var_export () получает структурированную информацию об данной переменной. Он похож на var_dump () с одним исключением: возвращаемое представление является допустимым кодом PHP.
Они отличаются от print_r
что var_dump
экспортирует больше информации, например, тип данных и размер элементов.