var_dump,var_export&的print_r

时间:2011-02-18 09:10:34

标签: php

var_dumpvar_exportprint_r之间有什么区别?

2 个答案:

答案 0 :(得分:181)

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_dumpprint_r会检查这些数据。默认情况下,var_export会打印结果,但允许使用可选的$return参数作为字符串返回。

array (
  0 => '',
  1 => false,
  2 => 42,
  3 => array (0 => '42',),
)

就我个人而言,我认为var_export是简明扼要的最佳妥协。

答案 1 :(得分:3)

var_dumpvar_export就像这样(来自manual

  

var_export()得到结构化   有关给定变量的信息。   它与var_dump()类似   exception:返回的表示形式   是有效的PHP代码。

它们与print_r不同,var_dump导出更多信息,例如数据类型和元素大小。