print_r(array('name'=> 'bob', 'age' => 20, 'sex' => 'man'));
然后:
Array {
[name] => bob,
[age] => 20,
[sex] => man }
var_dump(array('name' => 'bob', 'age' => 20));
将显示:
array(2) {
['name'] => string(3) 'bob'
['age'] => int(20) }
var_dump
非常适合调试,并且比print_r
更好。但为什么print_r
仍然存在?或print_r
有一些我不知道的优势
答案 0 :(得分:11)
如果在<pre>
标签之间输出print_r,那么它会提供比var_dump更可读的输出。这是我在调试时使用的主要原因。
Array
(
[name] => bob,
[age] => 20,
[sex] => man
)
基本上它为你提供了一个var_dump没有的格式化输出。虽然它没有给你详细的类型信息。
答案 1 :(得分:8)
print_r
和var_dump
之间的一个巨大差异是print_r
采用可选的第二个参数,这允许您将内容存储在变量中。例如:
$debug = print_r($someArray, true);
echo $debug;
(请注意,使用output control functions的var_dump
也可以实现这一点,但是)
此外,print_r
的可读性远远优于var_dump
:
<强>的var_dump:强>
array(3) {
[0]=>
int(1)
[1]=>
int(2)
[2]=>
array(3) {
[0]=>
string(1) "a"
[1]=>
string(1) "b"
[2]=>
string(1) "c"
}
}
<强>的print_r:强>
Array
(
[a] => apple
[b] => banana
[c] => Array
(
[0] => x
[1] => y
[2] => z
)
)
答案 2 :(得分:2)
你能否提出一些理由通过删除它来打破数十万个PHP脚本?
答案 3 :(得分:0)
如果您希望获得尽可能多的数据,请使用var_dump()
,但我发现print_r()
更易被人类阅读。