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