PHP – 连接或直接在string中插入variables

我想知道,什么是插入PHPvariables到string的正确方法?

这条路:

echo "Welcome ".$name."!" 

或者这样:

 echo "Welcome $name!" 

这两个方法都在我的PHP v5.3.5 。 后者是更短,更简单,但我不知道如果第一个更好的格式或接受为更合适的。

在这两种语法之间,你应该select一个你喜欢的:-)

就我个人而言,在这种情况下(可变插值) ,我会select第二种解决scheme,我发现它更容易写入和读取。

结果将是一样的; 即使有性能影响,那也不重要1

作为一个旁注,所以我的答案是更完整的一天:你会想要做这样的事情:

 echo "Welcome $names!"; 

PHP会解释你的代码,就好像你正在试图使用$namesvariables – 这个variables不存在。

那一天,您需要使用{}

 echo "Welcome {$name}s!" 

没有必要回退到串联。

还要注意你的第一个语法:

 echo "Welcome ".$name."!"; 

可能可以优化 ,避免串联,使用:

 echo "Welcome ", $name, "!"; 

(但是,正如我刚才所说,这并不重要…)

1 – 除非你正在进行成千上万的连接和插值 – 可能情况并非如此。

双引号的string更加优雅,因为每次需要插入variables时都不必分割string(就像使用单引号string一样)。

但是,如果需要插入函数的返回值,则不能将其插入到双引号string中 – 即使用括号括起来也是如此!

 //syntax error!! //$s = "Hello {trim($world)}!" //the only option $s = "Hello " . trim($world) . "!"; 

任何一个都没问题。 使用为您提供更好的可见性的那个。 说到能见度,你也可以查看printf 。

从认为简单可读一致容易理解的angular度来看(因为这里的performance并不重要):

  • 当你想embedded对象属性,multidimensional array等等时,在双引号中使用embedded式variables可能会导致复杂和混乱的情况。也就是说,通常在读取embedded式variables时,不能立即100%确定正在读取的最终行为。

  • 您经常需要添加拐杖,如{}\ ,IMO增加了混淆,并且使连接可读性几乎相当(如果不是更好的话)。

  • 只要您需要围绕var包装函数调用,例如htmlspecialchars($var) ,就必须切换到串联。

  • AFAIK,你不能embedded常量。

在某些特定情况下,“embeddedvariables的双引号”可能是有用的,但一般来说,我会去拼接 (方便时使用单引号或双引号)

我知道这个问题已经有了一个select的答案,但是我发现这篇文章显然表明string插值的工作比串联更快。 对于那些仍然有疑问的人可能会有所帮助。

这只是味道的问题。
使用任何你想要的。

大部分时间我正在使用第二个,但这取决于。

让我build议你也让自己一个好的编辑器,将突出显示一个string内的variables

不要连接。 这是不需要的,我们逗号作为回声可以采取多个参数

 echo "Welcome ", $name, "!"; 

关于使用单引号或双引号的区别是微不足道的,你可以做大量的stringtesting。

去第一个,用单引号!

  1. 阅读起来比较容易,这意味着其他程序员将会知道发生了什么
  2. 它的工作速度稍微快一点,PHPparsing你的源代码的时候创build操作码的方式,基本上就是这样做的,所以给它一个帮助!
  3. 如果您还使用单引号而不是双引号,则可以进一步提升性能。

当你需要使用双引号时,唯一的情况是你需要\r\n\t ! 在任何其他情况下,开销是不值得的。

您还应该检查PHPvariablesconcatenation , phpbench.com的一些基准testing的不同方法。

你应该select第一个。 除了performance之外,他们没有区别,第一个是第二个比较中的快速。

如果双引号PHP里面的variables需要时间parsingvariables。

看看这个单引号或双引号variables串联?

这是另一个例子是否有性能好处单引号与双引号在PHP?

我不明白为什么这个答案在上面的链接得到upvoted,为什么这个答案downvote。

正如我所说的一样。

你也可以看看这里

什么是更快的PHP,单引号或双引号?

第二种方法是最好的。 有关PHPvariables和数据types的更多信息,可以参考http://www.cikkimikki.com/2015/05/php-variables-and-data-type.html

因为php4你可以使用stringformater:

 $num = 5; $word = 'banana'; $format = 'can you say %d times the word %s'; echo sprintf($format, $num, $word);