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