PHP-串联或直接在字符串中插入变量
我想知道,在字符串中插入PHP变量的正确方法是什么?PHP-串联或直接在字符串中插入变量,php,string,variables,concatenation,Php,String,Variables,Concatenation,我想知道,在字符串中插入PHP变量的正确方法是什么? 这样: echo "Welcome ".$name."!" echo "Welcome $name!" 或者这样: echo "Welcome ".$name."!" echo "Welcome $name!" 这两种方法都适用于我的PHPV5.3.5。后者更短更简单,但我不确定前者是更好的格式还是更合适。在这两种语法之间,你真的应该选择你喜欢的一种:-) 就我个人而言,在这种情况下,我会使用您的第二种解决方案(变量插值),我发现它
这样:
echo "Welcome ".$name."!"
echo "Welcome $name!"
或者这样:echo "Welcome ".$name."!"
echo "Welcome $name!"
这两种方法都适用于我的
PHPV5.3.5
。后者更短更简单,但我不确定前者是更好的格式还是更合适。在这两种语法之间,你真的应该选择你喜欢的一种:-)
就我个人而言,在这种情况下,我会使用您的第二种解决方案(变量插值),我发现它更易于编写和读取
结果是一样的;即使存在性能影响,这些也无关紧要1
作为旁注,我的答案更完整一点:有一天你会想做这样的事情:
echo "Welcome $names!";
PHP将解释您的代码,就像您试图使用$names
变量一样——该变量不存在。
-请注意,只有在字符串中使用“not”时,它才会起作用
那天,您需要使用{}
:
echo "Welcome {$name}s!"
不需要回退到连接
还要注意,您的第一个语法:
echo "Welcome ".$name."!";
可以使用以下方法进行优化,避免连接:
echo "Welcome ", $name, "!";
(但是,正如我前面所说,这并不重要……)
1-除非你在做数十万次的串联和插值,否则情况可能不是这样。你应该选择第一个。除了性能上的差异外,它们没有什么区别。第一个比第二个快 如果双引号内的变量需要PHP花时间来解析变量 看看这个 这是另一个例子 我不明白为什么上面链接中的这个答案会被投赞成票,为什么这个答案会被投反对票 就像我说的一样 你也可以看看这里
两个都可以。使用对您有更好可见性的。说到可见性,您也可以查看。使用第一个并使用单引号
\r
,\n
,\t
时,才应该使用双引号!
在任何其他情况下都不值得使用开销
你还应该检查一些不同做事方法的基准。这只是品味的问题。
想用什么就用什么 大多数情况下,我使用第二个,但这取决于
我还建议您自己找一个好的编辑器,它将突出显示字符串内部的变量双引号字符串更优雅,因为您不必每次需要插入变量时都打断字符串(就像您必须使用单引号字符串一样) 但是,如果需要插入函数的返回值,则不能将其插入到双引号字符串中——即使用大括号将其括起来
//syntax error!!
//$s = "Hello {trim($world)}!"
//the only option
$s = "Hello " . trim($world) . "!";
不要连接。不需要,us逗号as echo可以接受多个参数
echo "Welcome ", $name, "!";
关于使用单引号或双引号,差异可以忽略不计,您可以使用大量字符串进行测试,以便自己进行测试。从使思考变得简单的角度来看,可读性,一致性,易于理解(因为性能在这里并不重要):
- 当您想要嵌入对象属性、多维数组等时,在双引号中使用嵌入变量可能会导致复杂和混乱的情况。 也就是说,通常在读取嵌入式变量时,您无法立即100%确定所读取内容的最终行为
- 您经常需要添加拐杖,如
和{}
,这会增加混淆,并使串联可读性几乎相等(如果不是更好的话)\
- 只要您需要围绕var包装函数调用,例如
,就必须切换到串联htmlspecialchars($var)
- 好的,你不能嵌入常量
在某些特定情况下,“带变量嵌入的双引号”可能很有用,但一般来说,我会选择串联(方便时使用单引号或双引号)我知道这个问题已经有了选择的答案,但我发现这显然表明字符串插值比串联工作得更快。它可能对那些仍有疑问的人有所帮助。因为php4,您可以使用字符串格式化程序:
$num = 5;
$word = 'banana';
$format = 'can you say %d times the word %s';
echo sprintf($format, $num, $word);
来源:我知道这是一个老问题,但我认为必须有人提及所有的利弊: 更好的语法:这是个人偏好 性能:无差异。正如许多人提到的,如果使用不现实的多个变量,双引号可能会更快 更好的用法:单引号(大部分)。正如@Khez所说,使用单引号可以连接任何内容,甚至函数调用和变量修改,比如:
echo'hi'。修剪($name)。(一加一)代码>。双引号所能做的唯一一件单引号所不能做的事情就是使用\n
、\r
、\t
等等
可读性:无差异(个人偏好可能适用)
可写性/可重写性/调试:在单行语句中没有区别,但在处理多行时,在调试或编写时更容易注释/取消注释行。例如:
$q = 'SELECT ' .
't1.col1 ' .
',t2.col2 ' .
//',t3.col3 ' .
'FROM tbl1 AS t1 ' .
'LEFT JOIN tbl2 AS t2 ON t2.col2 = t1.col1 ' .
//'LEFT JOIN tbl3 AS t3 ON t3.col3 = t2.col2 ' .
'WHERE t1.col1 = ' . $x . ' ' .
' AND t2.col2 = ' . $y . ' ' .
//' AND t3.col3 = ' . $z . ' ' .
'ORDER BY t1.col1 ASC ' .
'LIMIT 10';
少转义:单引号。对于单引号,只需转义2个字符(”echo "Number $i!";
echo "Number " . ($i + 1) . "!";
$con = mysqli_connect('ServerName', 'dbUsername', 'dbPassword');
mysqli_select_db($con, 'dbName')
//'ID' is auto increment field.
$sql = "INSERT INTO sampleTable (ID, TraceNo) VALUES ('','$sampleArray['TraceNo']')";
mysqli_query($con, $sql)
//'ID' is auto increment field.
$sql = "INSERT INTO sampleTable (ID, TraceNo) VALUES ('','$sampleArray[TraceNo]')";
echo "Welcome {$name}!"
echo "Hello ".$var;
echo "Hello {$var}";