我想知道,插入PHP变量到字符串的正确方法是什么? 这种方式:
echo "Welcome ".$name."!"
或者这样:
echo "Welcome $name!"
这两种方法都可以在我的PHP v5.3.5中使用。后者更短更简单,但我不确定前者是更好的格式还是更合适。
我想知道,插入PHP变量到字符串的正确方法是什么? 这种方式:
echo "Welcome ".$name."!"
或者这样:
echo "Welcome $name!"
这两种方法都可以在我的PHP v5.3.5中使用。后者更短更简单,但我不确定前者是更好的格式还是更合适。
当前回答
如果你想执行一个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]')";
其他回答
双引号字符串更优雅,因为您不必在每次需要插入变量时拆分字符串(就像您必须对单引号字符串做的那样)。
但是,如果需要插入函数的返回值,则不能将其插入双引号字符串中——即使使用大括号将其括起来!
//syntax error!!
//$s = "Hello {trim($world)}!"
//the only option
$s = "Hello " . trim($world) . "!";
在这两种语法之间,你应该选择一个你喜欢的:-)
就我个人而言,在这种情况下,我会选择你的第二个解决方案(变量插值),我发现它更容易写和读。
结果是一样的;即使对性能有影响,那也不重要。
作为旁注,所以我的回答更完整一点:那天你会想做这样的事情:
echo "Welcome $names!";
PHP会将您的代码解释为您试图使用$names变量——这个变量并不存在。 -注意,只有在字符串中使用" not "时它才会起作用。
那天,你需要使用{}:
echo "Welcome {$name}s!"
不需要退回到连接。
还要注意你的第一个语法:
echo "Welcome ".$name."!";
可以优化,避免连接,使用:
echo "Welcome ", $name, "!";
(但是,就像我之前说的,这并不重要…)
1 -除非你在做成千上万次的拼接和插值——这可能不是完全的情况。
你应该选择第一个。他们没有什么不同,除了性能,第一个将是最快的第二个比较。
如果双引号内的变量PHP需要时间来解析变量。
检查这个单引号或双引号变量连接?
在php中单引号和双引号是否有性能上的优势?
我不明白为什么上面链接的这个答案会被点赞,为什么这个答案会被点赞。
我也说过了。
你也可以看这里
PHP中哪个更快,单引号还是双引号?
这只是趣味问题。 你想用什么就用什么。
大多数时候我用第二个,但这要看情况。
我还建议你找一个好的编辑器,它可以突出显示字符串中的变量
从简单、易读、一致和易于理解的角度来看(因为性能在这里并不重要):
Using embedded vars in double quotes can lead to complex and confusing situations when you want to embed object properties, multidimentional arrays etc. That is, generally when reading embedded vars, you cannot be instantly 100% sure of the final behavior of what you are reading. You frequently need add crutches such as {} and \, which IMO adds confusion and makes concatenation readability nearly equivalent, if not better. As soon as you need to wrap a function call around the var, for example htmlspecialchars($var), you have to switch to concatenation. AFAIK, you cannot embed constants.
在某些特定情况下,“嵌入vars的双引号”可能是有用的,但一般来说,我会使用串联(方便时使用单引号或双引号)