PHP ::三个echo语句具有相同的结果

时间:2012-07-09 19:53:03

标签: php

也许这是一个小问题,但请考虑以下PHP代码:

$a = "foo1"; $b = "foo2"; $c = "foo3";

echo $a, $b, $c;

echo $a . $b . $c;

echo "$a$b$c";

这三个陈述不等同。有什么不同。 如果无法决定是否使用其中一种,该怎么办?

3 个答案:

答案 0 :(得分:6)

第一个只是在一次通话中回显3个值。另外两个进行字符串连接并输出该操作的结果。换句话说,如果你连续几次这样做,第一个版本可能会稍快一点,因为正在进行的字符串操作较少。

话虽这么说,即使你减少了PHP中的字符串操作,echo语句产生的输出仍然会被添加到输出缓冲区的末尾,并且填充一个更大的字符串可能比多个更小的字符串更有效

在宏观方案中,任何一个版本之间可能没有什么区别,所以请选择对你来说最有意义的版本,并且最容易进行维护。

答案 1 :(得分:0)

它们大多是等价的,我认为唯一真正的区别在于它的执行方式。如果你使用php优化器,这可能变得无关紧要或不存在。

如果我猜测,我会说回声#1最快,接着是回声#2,最后是回声#3。

为什么我这样说?:

回声#1: 直接播放它所使用的语言结构,并简单地吐出变量。

回声#2:回声#2: 必须首先将字符串连接在一起,然后将其回显

回声#3: 首先必须搜索字符串并将其找到的内容替换为变量。这很可能是最昂贵的操作。

附加说明: 在将字符串放入变量时,您应该始终使用单引号,除非明确要求在内部替换变量。因此,你的第一行:

$a = "foo1"; $b = "foo2"; $c = "foo3";

应该是:

$a = 'foo1'; $b = 'foo2'; $c = 'foo3';

答案 2 :(得分:0)

关于第三种方法的说明:

在双引号中使用变量时,我习惯使用大括号,因为它们会转义基于数组的变量:

echo "{$a}{$b}{$c}";

如果$c是关联数组并且您想输出它的某个元素,则该语句将为:

echo "{$a}{$b}{$c['foo']}";

有时,这会导致整齐的字符串格式化,而不是将变量和字符串连接在一起以进行输出。