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