变量串联的单引号还是双引号?[已关闭]
将变量(例如)连接到现有字符串(例如)中是否更好,如下所示:$name
$string
$string='Hi, my name is '.$name
或者将变量嵌入到字符串中,如下所示:
$string="Hi, my name is $name";
还是使用这样的函数更好:
$string=sprintf("Hi, my name is %s",$name);
在处理器时间/效率方面哪个更好?
将变量(例如)连接到现有字符串(例如)中是否更好,如下所示:$name
$string
$string='Hi, my name is '.$name
或者将变量嵌入到字符串中,如下所示:
$string="Hi, my name is $name";
还是使用这样的函数更好:
$string=sprintf("Hi, my name is %s",$name);
在处理器时间/效率方面哪个更好?
每个做测试的人都得出结论,使用单引号在性能方面略胜一筹。最后,单引号只产生串联,而双引号则强制解释器解析变量的完整字符串。
然而,对于最新版本的PHP来说,这样做的额外负载是如此之小,以至于大多数时候的结论是它并不重要。
所以对于表演的人:使用单引号。对于“我喜欢我的代码可读性”的人:双引号对于易读性要好得多,正如Flavius Stef已经指出的那样。
编辑:不过有一件事 - 如果你打算在没有变量的情况下在字符串中使用一美元,那么肯定使用单引号!(http://www.weberdev.com/get_example-3750.html 指出,解析这些字符串需要4倍的时间)
PHP中单引号和双引号之间的区别在于,双引号是“智能的”,因为它们在读取时会解析变量,而单引号是“愚蠢的”,不会尝试解析字符串中的任何字符。
这些导致您可以使用的字符的一些细微差异;基本上,使用单引号时唯一需要转义的字符是单引号本身:
'\''
虽然如果你使用双引号,你必须转义其他字符:
"\$"
但它也允许一些漂亮的东西,比如在末尾添加一个新行:
"my string\n"
使用单引号,您必须进行串联:
'my string' . chr(10)
'my string' . "\n"
通常,单引号更快,因为它们是“愚蠢的”。
但是,通常不应该真正担心这些问题,这称为过早优化,应该避免。
关于优化的几句话:一般来说,人们应该首先按照它应该工作的方式编写程序,然后找到最大的瓶颈并修复那些特定的瓶颈。如果在PHP中字符串速度确实是一个问题,您可能需要考虑切换到另一种语言。
关于速度:您可能希望更多地关注内存使用率而不是CPU时间。在这些情况下,CPU时间可以被认为是非常恒定的。在编写将迭代多次的算法时,CPU 时间更为相关。
关于串联:使用点运算符连接字符串的次数越多,使用的内存就越多。
请考虑以下情况:
$str1 = 'asdf';
$str2 = 'qwer';
// this will result in more memory being allocated for temporary storage
echo $str1 . $str2;
// this will not allocate as much memory as the previous example
echo $str1;
echo $str2;