php中的echo和print_r之间​​的区别?

时间:2011-06-03 20:47:02

标签: php

  

可能重复:
  What’s the difference between echo, print, and print_r in PHP?

我可以使用这两种看似相同的效果。这两者有区别吗?并且优先于另一个吗?

谢谢!

5 个答案:

答案 0 :(得分:7)

$a = array ('a' => 'apple', 'b' => 'banana', 'c' => array ('x', 'y', 'z'));
echo array($a); // returns "Array"
print_r($a); // returns 
Array
(
    [a] => apple
    [b] => banana
    [c] => Array
        (
            [0] => x
            [1] => y
            [2] => z
        )
)

答案 1 :(得分:6)

区别在于print_r递归打印一个数组(或对象,但看起来不太好),显示所有键和值。 echo没有,并且用于标量值。

答案 2 :(得分:3)

print_r打印有关变量的人类可读信息,而echo仅用于字符串。

答案 3 :(得分:3)

Echo只提供值,print_r提供有关变量本身的更多信息,例如数据类型和数组中的元素(如果适用)。

答案 4 :(得分:2)

我认为你必须指的是printecho而不是print_r .... print_r非常明显不同。

首先,查看文档。从表面上看,差别不大:

http://php.net/manual/en/function.print.php

http://php.net/manual/en/function.echo.php

主要区别在于打印可以表现为函数或语言结构。这些都可以起作用:

print('Something');
print 'Something';

前一种方法(带括号)在打印后返回一个值。现在,这引出了一个问题:“打印后为什么需要返回值?”答案是,简单地说,你没有。两种输出方法都是语言结构,两者之间没有明显的性能差异。在极大的范围内,由于返回值,echo可能比print略快,但它几乎无法衡量。

你可以采取一些技巧来利用print的功能就像一个函数,尽管我很难给你一个真实的例子。这是一个不那么现实的例子:

if (print('Test')) {
  // do something after the string is printed
}

同样,不是那么有用,但你有它。