0

这可能是一个非常基本的问题,但我一直在努力寻找合适的答案。我的第一个问题,所以请温柔一点。

将字符串与变量组合时,我知道在单引号字符串中包含变量不会扩展变量,而双引号字符串会扩展变量(和其他特殊字符),从而产生两个示例中的语法:

$animal1='brown fox';
$animal2='lazy dog';
echo "The quick $animal1 jumps over the $animal2";
echo 'The quick '.$animal1.' jumps over the '.$animal2;

我记得阅读过 PHP 解析单引号封装的字符串比双引号封装的字符串更快,因为它没有花时间寻找需要解析的变量。这是真的?如果是这样,在连接字符串和变量时是否会丢失这种增益,如第二个示例所示?

我的主要问题是:在使用字符串和变量时,如上面的示例所示,两种封装方式是否更可取?

4

4 回答 4

5

我记得阅读过 PHP 解析单引号封装的字符串比双引号封装的字符串更快,因为它没有花时间寻找需要解析的变量。这是真的?

不,这是错误的,请参阅Disproving the Single Quotes Performance Myth (Jan 2012; By Nikic)

我的主要问题是:在使用字符串和变量时,如上面的示例所示,两种封装方式是否更可取?

这只是一个品味问题,找到你的方式,不要被你在网上找到的误导和虚假信息分心。写出你可以阅读和编辑的方式。

于 2013-10-16T10:31:15.430 回答
1

'使用起来比一般情况下要快得多"。尽管在大多数PHP应用程序中您永远不会注意到差异,但这种差异是如此之小。关于串联,两者的速度差不多,它们之间几乎没有区别,请在此处阅读基准:https ://stackoverflow.com/a/1813685/2859624

于 2013-10-16T10:33:42.887 回答
0

尽管只有最小的时间差异(例如,与服务器-客户端通信时间相比可以忽略不计),但一种方法可以使文本更清晰。后者使您更容易发现插入到文本中的变量。

我总是将变量从常规文本中取出,如您给出的示例 2 所示。

于 2013-10-16T10:33:55.890 回答
-1

以下是您可以参考的一些基准:

http://www.phpbench.com/

寻找单引号与双引号部分。差异是如此之小,以至于除非您要执行无数次,否则根本不会对性能产生影响。

还有另一种封装变量的方法,特别是在使用数组时很有用:

$str = "Encapsulating an array {$array['key']}";
于 2013-10-16T10:32:38.587 回答