为什么print_r()仍然存在?

时间:2011-04-12 09:36:44

标签: php

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有一些我不知道的优势

4 个答案:

答案 0 :(得分:11)

如果在<pre>标签之间输出print_r,那么它会提供比var_dump更可读的输出。这是我在调试时使用的主要原因。

Array
(
    [name] => bob,
    [age] => 20,
    [sex] => man
)

基本上它为你提供了一个var_dump没有的格式化输出。虽然它没有给你详细的类型信息。

答案 1 :(得分:8)

print_rvar_dump之间的一个巨大差异是print_r采用可选的第二个参数,这允许您将内容存储在变量中。例如:

$debug = print_r($someArray, true);
echo $debug;

(请注意,使用output control functionsvar_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()更易被人类阅读。