我会说单引号更快,因为它们不需要使用Shift键;)
不同的引号在变量输出和转义字符方面有所不同。单引号中的内容按原样处理,没有转义字符和解释变量。双引号会解释变量值并转义特殊字符,例如换行符 (\n
)。
取决于你想要做什么。我刚刚进行了一些基准测试,并使用了5个测试用例测试字符串赋值:带有变量的双引号、双引号、双引号和字符串追加、单引号以及带有字符串追加的单引号。
我的测试代码,一百万个循环。字符串赋值。
<?php
$start = microtime(true);
$str = "";
for($i = 0; $i<1000000; $i++)
{
$str = "hello $i";
}
$end = microtime(true);
echo $end - $start;
结果:
单引号和双引号的字符串(没有变量)速度相同 (每次输出约为0.08秒)。 带有变量连接符的单引号和双引号字符串速度大致相同,但比没有变量的情况要慢 (每次输出约为0.17-0.20秒)。 带有变量的双引号字符串最慢 (每次输出约为0.20-0.25秒)。
因此,单引号和双引号并不真正有区别,但是似乎字符串连接比变量替换更快。
如果你每秒要处理数千个字符串,那么你应该关注一下。
如果你想使用字符串插值(包括变量、数学等),请使用双引号。
你还应该尽量保持一致性。
通常情况下,我们不必为小幅度的效率提升操心,因为过早地优化是万恶之源。
如果不需要对其中的文本进行处理,则使用单引号更快。
单引号通常更快,并且内部引用的所有内容都被视为普通字符串,
例如
echo 'anyting else ? $something';
>> anything else? $something
PHP不会使用额外的处理来解释单引号内部的内容
然而,与双引号相比,PHP将用其分配的值替换$something
$something = 'yup';
echo "anyting else ? $something";
>> anything else ? yup