Web*_*ner 207 php string variables concatenation
我想知道,将PHP变量插入字符串的正确方法是什么?
这条路:
echo "Welcome ".$name."!"
Run Code Online (Sandbox Code Playgroud)
或者这样:
echo "Welcome $name!"
Run Code Online (Sandbox Code Playgroud)
这两种方法都适用于我的PHP v5.3.5.后者更短更简单,但我不确定第一个是更好的格式还是更合适.
Pas*_*TIN 322
在这两种语法之间,您应该选择您喜欢的语法:-)
就个人而言,我会在这种情况下使用你的第二个解决方案(可变插值),我发现它更易于写入和读取.
结果将是一样的; 即使有性能影响,这些也无关紧要1.
作为旁注,所以我的回答更完整:你想做这样的事情的那一天:
echo "Welcome $names!";
Run Code Online (Sandbox Code Playgroud)
PHP将解释您的代码,就像您尝试使用$names变量一样 - 这是不存在的.
那天,你需要使用{}:
echo "Welcome {$name}s!"
Run Code Online (Sandbox Code Playgroud)
无需回退到连接.
另请注意您的第一个语法:
echo "Welcome ".$name."!";
Run Code Online (Sandbox Code Playgroud)
可能可以优化,避免连接,使用:
echo "Welcome ", $name, "!";
Run Code Online (Sandbox Code Playgroud)
(但是,正如我之前所说,这并不重要......)
1 - 除非你正在进行成千上万的连接与插值 - 而且情况可能并非如此.
Mic*_*ael 17
双引号字符串更优雅,因为每次需要插入变量时都不必分解字符串(就像必须使用单引号字符串一样).
但是,如果需要插入函数的返回值,则无法将其插入双引号字符串中 - 即使用大括号括起来也是如此!
//syntax error!!
//$s = "Hello {trim($world)}!"
//the only option
$s = "Hello " . trim($world) . "!";
Run Code Online (Sandbox Code Playgroud)
从php4开始你可以使用字符串格式化器:
$num = 5;
$word = 'banana';
$format = 'can you say %d times the word %s';
echo sprintf($format, $num, $word);
Run Code Online (Sandbox Code Playgroud)
从 make thinks simple、readable、一致且易于理解的角度来看(因为这里的性能并不重要):
当您想要嵌入对象属性、多维数组等时,在双引号中使用嵌入的变量会导致复杂和混乱的情况。也就是说,通常在读取嵌入的变量时,您无法立即 100% 确定您正在阅读的内容的最终行为.
您经常需要添加诸如{}and 之类的拐杖\,这会增加 IMO 的混乱并使串联可读性几乎等效,甚至更好。
例如htmlspecialchars($var),一旦您需要在 var 周围包装函数调用,就必须切换到串联。
AFAIK,您不能嵌入常量。
在某些特定情况下,“带有 vars 嵌入的双引号”可能很有用,但一般来说,我会去连接(方便时使用单引号或双引号)
小智 5
我使用点(.) 连接字符串和变量。像这样-
echo "Hello ".$var;
Run Code Online (Sandbox Code Playgroud)
有时,我使用花括号来连接字符串和变量,如下所示-
echo "Hello {$var}";
Run Code Online (Sandbox Code Playgroud)