也许这是一个小问题,但请考虑以下PHP代码:
$a = "foo1"; $b = "foo2"; $c = "foo3";
echo $a, $b, $c;
echo $a . $b . $c;
echo "$a$b$c";
这三个陈述不等同。有什么不同。 如果无法决定是否使用其中一种,该怎么办?
答案 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']}";
有时,这会导致整齐的字符串格式化,而不是将变量和字符串连接在一起以进行输出。