Difference between var_dump,var_export & print_r
var_dump、var_export和print_r有什么区别?
- 有时要求别人比阅读手册更容易理解。
- @与PHP手册相比,您的常识S.O.答案通常更清晰、更简洁、更具操作性,并且基本上更容易参考。
Var dump is for debugging purposes.总是印刷结果。
1 2 3 4 5 6 7
| // 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=UR is for debugging purposes,too,but does not include the member's type.如果你知道你的阵列中的元素类型,那是个好主意,但可能会误导其他人。根据Default prints the result,but allows returning as string instead by using the optional $return
ZZU1
Var xExport prints valid php code.如果你计算了一些值,并希望结果在另一个脚本中成为常数,则使用。注:无法处理参考周期/回归阵列,Whereas var_dump和print_r查验。根据Default prints the result,but allows returning as string instead by using the optional $return
1 2 3 4 5 6
| array (
0 => '',
1 => false,
2 => 42,
3 => array (0 => '42',),
) |
我个人认为,这是最好的简明和准确的妥协。
- 请注意,由于var_export的性质,它将在递归数组上可怕的递归死亡。print_r和var_dump没有这个问题(不过,由于我通常不使用它,所以不能完全确定后者)。例如,不要使用var_export($_GLOBALS);(它包含自身)。:)
- @我一直认为这句话能很好地解释好奇心,但你看,在回答中加了一个简短的注释。
- 应该补充的是,您可以让print_()和var_export()返回一个字符串,而不是输出它,而var_dump()不能这样做。另外,我不喜欢var_export(),因为它很混乱-如果您尝试导出一些未定义的常量someconst,您只需返回一个文本字符串someconst。所以它不会说空,0",,但实际上它会假定它是一个字符串(我想也会发出一个通知)。
- var_export有助于安全地表示字符串,如引号/反斜杠保护。
- 知道为什么var_export在最后一个数组项后有一个尾随逗号吗?
- @网络化学家为什么不呢?这样更容易实现,如果我决定在某个地方使用输出,我可以简单地添加一行,而不必担心必须修改以前的最后一行。
- 我个人更喜欢var_dump输出。太糟糕了,它不允许以字符串形式返回输出。因此,我可以在上面的评论中提到@iconoclast的观点。但是必须选择var_export而不是var_dump,我可以接受这个用例。为了完整性,请注意这个相关的特性请求。
- print_r有助于以简洁明了的方式查看数据的structure。如前所述,它不包含类型信息,因此更适用于对数据结构的随意调查。
- @里卡多·马丁斯?使用var_export和var_dump时,都会输出0.85。在任何情况下,代码floatval(number_format(...))都是错误的—请注意,如果输入是1234.5,会发生什么情况!
- 你说得对@phihag.我想我在这里做错了什么,或者累了,哈哈。在这个阳光明媚的早晨得到了同样的结果。:p我删除了我的评论btw。
与此相似(从手册中)
var_export() gets structured
information about the given variable.
It is similar to var_dump() with one
exception: the returned representation
is valid PHP code.
出口信息更多,如数据类型和元素大小。