1

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

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

echo $a, $b, $c;

echo $a . $b . $c;

echo "$a$b$c";

这三个语句不是等效的。有什么不同。如果一个人无法决定是使用一个还是另一个怎么办?

4

3 回答 3

6

第一个只是在一次调用中回显 3 个值。另外两个执行字符串连接并输出该操作的结果。换句话说,如果您连续执行数十亿次,第一个版本可能会稍微快一些,因为正在进行的字符串操作更少。

话虽如此,即使您在 PHP 中减少字符串操作,由 echo 语句产生的输出仍将附加到输出缓冲区的末尾,并且填充单个较大的字符串可能比多个较小的字符串更有效。

从总体上看,这些版本中的任何一个版本之间可能几乎没有区别,因此请选择对您最有意义且最容易维护的版本。

于 2012-07-09T19:56:39.770 回答
0

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

如果我猜的话,我会说 echo #1 最快,其次是 echo #2,最后是 echo #3。

为什么我这么说?:

echo #1:直接使用语言结构,简单地吐出变量。

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

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

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

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

应该:

$a = 'foo1'; $b = 'foo2'; $c = 'foo3';
于 2012-07-09T20:04:28.250 回答
0

只是关于第三种方法的说明:

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

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

如果$c是一个关联数组并且你想输出它的一些元素,那么语句将是:

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

有时这会导致比将变量和字符串连接在一起输出更整洁的字符串格式。

于 2012-07-09T20:05:47.583 回答