var_dump,var_export和print_r之间​​的区别

Man*_*edi 123 php

有什么区别var_dump,var_exportprint_r

phi*_*hag 187

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")}
}
Run Code Online (Sandbox Code Playgroud)

print_r也用于调试目的,但不包括成员的类型.如果你知道数组中元素的类型,那么使用它是个好主意,否则可能会产生误导.print_r默认情况下打印结果,但允许使用可选$return参数作为字符串返回.

Array (
    [0] =>
    [1] =>
    [2] => 42
    [3] => Array ([0] => 42)
)
Run Code Online (Sandbox Code Playgroud)

var_export打印有效的PHP代码.如果您计算了一些值并希望结果在另一个脚本中作为常量,则非常有用.需要注意的是var_export不能处理参考周期/递归阵列,而var_dumpprint_r检查这些.var_export默认情况下打印结果,但允许使用可选$return参数作为字符串返回.

array (
  0 => '',
  1 => false,
  2 => 42,
  3 => array (0 => '42',),
)
Run Code Online (Sandbox Code Playgroud)

就个人而言,我认为这var_export是简洁和准确的最佳妥协.

  • 请注意,`var_export`,由于它的性质,将会死于递归数组的可怕递归死亡.`print_r`和`var_dump`(但不完全确定后者,因为我通常不使用它)没有那个问题.所以不要`var_export($ _ GLOBALS);`,例如(包含它自己).:) (51认同)