单引号或双引号变量串联?
是更好地串联一个变量(比如,$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倍来解析这些字符串)
“所有测试过的人......”数据源? – ina 2010-07-23 07:34:44
http://classyllama.com/development/php/php-single-vs-double-quotes/ http://www.procata.com/blog/archives/2005/03/08/microbenchmarks-of-single-和双重qouting/ 这里是2.谷歌可以给你更多。 – Blizz 2010-07-23 07:41:47
我认为测试甚至不是必需的。这只是一些处理器指令的问题。你越少(在这种情况下可以很容易猜测),你就越快。 – snowflake 2010-07-23 08:14:35
从语法的角度来看并不重要。两种变体都是正确的。使用你感觉更舒适的东西。
就个人而言,使用$string="Hi, my name is $name"
的时候,因为你并不需要乱用引号我感觉好多了。只需将复杂的SQL查询映射为10个变量...
我通常认为使用字符串插值("Hi, my name is $name"
)从易读性的角度来看更好。
PHP是相当缓慢:
幻灯片#3
所以不要太担心少像这些优化。
更注重使用APC来,虽然缓存你的代码成字节码。你会看到这个项目获得巨大的速度收益。
$string='Hi, my name is '.$name
这是最好的方式,在PHP和HTML结合的感觉!
或像这样:
$string="Hi, my name is $name";
这是老样子!
或者这样:
$string=sprintf("Hi, my name is %s",$name);
这是从Visual Basic或其他客户端编程语言来编程会写!
我希望我是有帮助的。
我不同意''你好,我的名字是$ name'''是“老”,并且''嗨,我的名字是'。$ name'好多了! – Josh 2011-01-23 22:47:40
个人而言,如果它只是一个正常的变量,甚至是类属性,我会写这样的:
$newVarA = "This is some text with a $variable";
$newVarB = "This is some more text, written in $settings->language";
不过,如果我使用数组值,那么我会跟单串联引号。
$newVarC = 'This is some text from a ' . $text['random'] . ' array';
希望这是有道理的。这完全是为了找到习惯并坚持下去。
你的数组示例工作得很好,没有连接。 '...来自{$ text ['random']}数组',或者来自$ text [random]数组''。如果您引用了多维数组,则只有*有*使用{}方法,因为PHP的解析器不是贪婪的。 '$ array [x] [y]'将被解析为'
是的。但是我发现在字符串中使用大括号对我来说有点丑陋。就像我说的,这只是我个人如何将字符串与变量连接起来的一个例子。 – 2010-07-24 09:22:04
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;
另一种方式:'echo $ str1,$ str2;' – nyuszika7h 2011-01-24 08:42:16
我的座右铭,并回答是:交给编译器编写的机器代码。我会告诉你我的意思是...
当您不需要包含PHP变量时使用单引号,否则使用双引号。 不用担心性能,只需在生产服务器上使用APC即可。而是专注于编写最易维护的代码;尽量使用注释,双引号等等,尽管它们可能会降低代码速度。每种优化都会降低代码的可维护性/可读性,因此请将其交给操作码缓存和编译器,以便将代码转换为机器代码,而不要自己这样做......因为优化而导致原始代码混淆。
单引号字符串比串联变量时双引号字符串更好。 点击链接,更好地理解...
出于性能,正如其他人证明,这是稍快使用单引号,而不是双引号。
单引号,如果应用于可读性科学,远离主观性,实际上会增加更多的“噪音”。噪音及其与可读性之间的关系在“清洁代码”一书中讨论过很多,可以得出结论:您必须看到更多的非空白字符,它越会妨碍可读性。如果适用于主观性,我花时间阅读的大多数地方实际上更喜欢单引号。
使用你的判断。
$var = "My $string with $lots of $replacements."
比更可读:
$var = 'My ' . $string . ' with ' . $lots . ' of ' . $replacements . '.';
我承认:
$var = "My string.";
看起来几乎一样:
$var = 'My String.';
但是后者介绍更少的噪音以及有很多代码的时候每一点都有帮助,更不用说使用单引号获得的其他好处。
最后,我更喜欢KISS。除非需要双引号,否则请使用单引号。简单的约定更易于输入,更容易维护,更易于分析和阅读。
我会说,这取决于数据来自哪里...用户输入或系统输入 – Prix 2010-07-23 07:20:16
会有性能差异吗?即每个处理器的时间更多? – ina 2010-07-23 07:22:19
[PHP - “Sal's mall is $ emo”vs“Sal's mall is”。$ emo - string with quotes concatenation efficiency](http://stackoverflow.com/questions/3394166/php-sals-mall-is -emo-vs-sals-mall-is-emo-string-with-quotes-concaten) – 2011-01-23 22:44:30