我想知道,插入PHP变量到字符串的正确方法是什么? 这种方式:
echo "Welcome ".$name."!"
或者这样:
echo "Welcome $name!"
这两种方法都可以在我的PHP v5.3.5中使用。后者更短更简单,但我不确定前者是更好的格式还是更合适。
我想知道,插入PHP变量到字符串的正确方法是什么? 这种方式:
echo "Welcome ".$name."!"
或者这样:
echo "Welcome $name!"
这两种方法都可以在我的PHP v5.3.5中使用。后者更短更简单,但我不确定前者是更好的格式还是更合适。
当前回答
我知道这是一个老问题,但我认为有人必须提到所有的优点和缺点:
这是个人偏好。
性能:没有区别。正如许多人提到的,如果使用不切实际的许多变量,双引号可能会更快。
更好的用法:单引号(大多数情况下)。正如@Khez所说,用单引号你可以连接任何东西,甚至是函数调用和变量修改,就像这样:echo 'hi '。(名字)美元。($i + 1);双引号能做而单引号不能做的唯一一件事是使用\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个字符('和\)。对于双引号,您需要转义2个字符(",\),如果需要,还需要转义3个字符($,{和})。
变化少:单引号。例如,如果你有以下代码:
echo 'Number ' . $i . '!';
你需要增加1到$i,所以它变成了like:
echo 'Number ' . ($i + 1) . '!';
但是对于双引号,你需要改变这个:
echo "Number $i!";
:
echo "Number " . ($i + 1) . "!";
结论:用你喜欢的。
其他回答
从第一个开始,使用单引号!
它更容易阅读,这意味着其他程序员将知道发生了什么 它的工作速度略快,PHP解剖源代码时创建操作码的方式,基本上都会这样做,所以给它一个帮助! 如果你也使用单引号而不是双引号,你会进一步提高你的表现。
只有当你需要\r, \n, \t时,你才应该使用双引号! 在任何其他情况下使用它的开销都是不值得的。
您还应该检查PHP变量拼接,phpbench.com,以获得关于不同操作方法的一些基准测试。
如果你想执行一个SQL命令,而你的变量是数组成员,那么你不应该在数组的[]中使用单引号(像这样:["]);例如,如果你使用这个字符串作为SQL命令,你会得到服务器错误500:
$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]')";
两种都可以。使用对你来说能见度更好的那个。说到可见性,你也可以查看printf。
你应该选择第一个。他们没有什么不同,除了性能,第一个将是最快的第二个比较。
如果双引号内的变量PHP需要时间来解析变量。
检查这个单引号或双引号变量连接?
在php中单引号和双引号是否有性能上的优势?
我不明白为什么上面链接的这个答案会被点赞,为什么这个答案会被点赞。
我也说过了。
你也可以看这里
PHP中哪个更快,单引号还是双引号?
在这两种语法之间,你应该选择一个你喜欢的:-)
就我个人而言,在这种情况下,我会选择你的第二个解决方案(变量插值),我发现它更容易写和读。
结果是一样的;即使对性能有影响,那也不重要。
作为旁注,所以我的回答更完整一点:那天你会想做这样的事情:
echo "Welcome $names!";
PHP会将您的代码解释为您试图使用$names变量——这个变量并不存在。 -注意,只有在字符串中使用" not "时它才会起作用。
那天,你需要使用{}:
echo "Welcome {$name}s!"
不需要退回到连接。
还要注意你的第一个语法:
echo "Welcome ".$name."!";
可以优化,避免连接,使用:
echo "Welcome ", $name, "!";
(但是,就像我之前说的,这并不重要…)
1 -除非你在做成千上万次的拼接和插值——这可能不是完全的情况。