php单引号解析变量,关于php:变量连接的单引号或双引号?

是否更好地将变量(例如,$name)连接到现有字符串(例如,$string),如下所示:

$string='Hi, my name is '.$name

或者将变量嵌入字符串中,如下所示:

$string="Hi, my name is $name";

或者使用这样的函数更好:

$string=sprintf("Hi, my name is %s",$name);

哪个在处理器时间/效率方面更好?

我想说,这取决于数据的来源......用户输入或系统输入

会有性能差异吗? 即每个处理器的处理时间更长?

PHP的可能重复 -"Sal的商城是$ emo"vs"Sal的商城是"。$ emo - 带引号连接效率的字符串

/我在sitepoint名流dan grossman挥手。

必读:拒绝单引号表现神话(2012年1月;由NikiC提供)

也许这取决于你使用的系统? x86 olllld服务器上的单引号速度比我多年前发布时使用的更快

每个进行测试的人都认为使用单引号在性能方面稍微好一些。最后,单引号只会导致连接,而双引号会强制解释器解析变量的完整字符串。

然而,对于PHP的最新版本而言,这样做的额外负担是如此之小,以至于大多数时候结论是它并不重要。

所以对于表现人来说:使用单引号。对于"我喜欢我的代码可读" - 人:双引号在易读性方面要好得多,正如Flavius Stef已经指出的那样。

编辑:但有一件事 - 如果你要在没有变量的字符串中使用一美元,请使用单引号! (http://www.weberdev.com/get_example-3750.html指出解析这些字符串需要4倍的时间)

"所有参与测试的人......"数据来源?

classyllama.com/development/php/php-single-vs-double-quotes procata.com/blog/archives/2005/03/08/这里有2.谷歌可以给你更多。

我认为甚至不需要测试。这只是处理器指令数量的问题。你拥有的越少(在这种情况下可以很容易猜到),你的速度就越快。

解析只做一次。双引号字符串没有额外的解析。

当然,解析只进行一次。但解析过程中的步骤是指。使用双引号,解析器必须将可变插值步骤添加到其解析链中。

phpbench.com

如果有相关的表现原因,那么现在没有任何区别 - nikic.github.io/2012/01/09/

这是BS。使用双引号和单引号之间可能只有非常轻微的性能差异。两者之间的区别在于解析器将在双引号字符串中使用变量插值,但不使用单引号字符串。因此,也许在很早的时候,这可能是性能上的差异,但正如上面的答案中所说的那样,从来没有太大的差异。资源是编码指南FIG / PSR php-fig.org/psr和github.com/zikula/core/wiki/您提供此信息的来源是什么?

老兄......认真吗?你不仅回答了超过6年的答案,你基本上也在说同样的事情。这就是"略微好转"的意思:"非常轻微"。

PHP中单引号和双引号之间的区别在于双引号是"智能"的,因为它们在读取时将解析变量,而单引号是"哑"并且不会尝试解析字符串中的任何字符。

这些导致您可以使用的字符存在一些细微差别;基本上,使用单引号时唯一需要转义的字符是单引号本身:

'\''

如果你使用双引号,你必须逃避其他字符:

"\$"

但它也允许一些漂亮的东西,比如在最后添加一个新行:

"my string

"

使用单引号,您必须进行连接:

'my string' . chr(10)

'my string' ."

"

通常,单引号更快,因为它们是"哑"。

但是,通常人们不应该真正担心这些问题,即所谓的过早优化,应该避免。

关于优化的几句话:通常应该首先按照它应该的方式编写程序,然后找到最大的瓶颈并修复那些特定的瓶颈。如果字符串速度在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;

我一般认为从易读性的角度来看,使用字符串插值("Hi, my name is $name")会更好。

对于性能,正如其他人已经证明的那样,使用单引号而不是双引号会略微快一些。

单引号,如果应用于可读性科学并远离主观性,实际上会增加更多的"噪音"。"清洁代码"一书中讨论了噪声及其与可读性的关系,人们可以得出结论,你必须看到的非空白越多,它就越妨碍可读性。如果应用于主观性,我花时间阅读的大多数地方实际上更喜欢单引号。

用你的判断。

$var ="My $string with $lots of $replacements."

比以下内容更具可读性:

$var = 'My ' . $string . ' with ' . $lots . ' of ' . $replacements . '.';

我承认:

$var ="My string.";

看起来几乎相同:

$var = 'My String.';

然而,后者引入的噪音较少,当周围有很多代码时,每一点都有帮助,更不用说使用单引号带来的其他好处。

最后,我更喜欢KISS。除非您需要双引号,否则请使用单引号。简单的约定,更容易键入,更易于维护,更易于解析和更易于阅读。

在连接变量时,单引号字符串比双引号字符串更好。

点击链接以便更好地理解......

我的座右铭和答案是:将它留给编译器编写机器代码。我会告诉你我的意思......

如果不需要包含PHP变量,请使用单引号,否则使用双引号。

不要担心性能只是在生产服务器上使用APC。而是专注于编写最易维护的代码;正确使用注释,双引号等,即使它们可能会降低代码速度。每次降低代码的可维护性/可读性的优化都是不好的,请将其留给操作码 - 编译器和编译器将代码转换为机器代码,不要自己动手操作......由于优化而导致源代码混淆。

就个人而言,如果它只是一个普通变量,甚至是一个类属性,我会这样写:

$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';

希望这是有道理的。这都是关于寻找惯例并坚持下去的。

您的数组示例在没有连接的情况下工作正常。 ... from a {$text['random']} array或... from a $text[random] array。如果你引用一个多维数组,你只需要使用{}方法,因为PHP的解析器并不贪心。 $array[x][y]将被解析为。

是。但我发现在字符串中使用大括号对我来说有点难看。就像我说的,它只是我个人如何将字符串与变量连接起来的一个例子。

PHP很慢:

http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-088-introduction-to-c-memory-management-and-c-object-oriented-programming-january-iap- 2010 /讲课笔记/ MIT6_088IAP10_lec01.pdf

幻灯片#3

因此,不要过于担心像这样的小优化。

尽可能注重使用APC将代码缓存为字节代码。你会看到项目的速度有很大提升。

从语法角度来看无关紧要。两种变体都是正确的。使用你感觉更舒服的东西。

就个人而言,使用$string="Hi, my name is $name"时我感觉更好,因为你不需要乱用引号。只需使用10个变量对复杂的SQL查询进行映像...

$string='Hi, my name is '.$name

这是php和html组合意义上的最佳方式!

或者像这样:

$string="Hi, my name is $name";

这是旧的方式!

或者像这样:

$string=sprintf("Hi, my name is %s",$name);

这是来自Visual Basic或其他客户编程语言的程序员会写的!

我希望我能提供帮助。

我不同意"Hi, my name is $name"是"老",而'Hi, my name is '.$name在某种程度上更好!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值