我想知道,插入PHP变量到字符串的正确方法是什么? 这种方式:

echo "Welcome ".$name."!"

或者这样:

echo "Welcome $name!"

这两种方法都可以在我的PHP v5.3.5中使用。后者更短更简单,但我不确定前者是更好的格式还是更合适。


当前回答

不要连接。这是不需要的,我们的逗号作为echo可以接受多个参数

echo "Welcome ", $name, "!";

关于使用单引号或双引号,差异可以忽略不计,您可以使用大量字符串进行测试。

其他回答

我知道这是一个老问题,但我认为有人必须提到所有的优点和缺点:

这是个人偏好。

性能:没有区别。正如许多人提到的,如果使用不切实际的许多变量,双引号可能会更快。

更好的用法:单引号(大多数情况下)。正如@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) . "!";

结论:用你喜欢的。

我使用点(.)连接字符串和变量。像这样,

echo "Hello ".$var;

有时,我使用花括号连接字符串和变量,看起来像这样-

echo "Hello {$var}";

我知道这个问题已经有了一个选择的答案,但我发现这篇文章明显表明,字符串插值比串联更快。这可能对那些仍在犹豫的人有所帮助。

在这两种语法之间,你应该选择一个你喜欢的:-)

就我个人而言,在这种情况下,我会选择你的第二个解决方案(变量插值),我发现它更容易写和读。

结果是一样的;即使对性能有影响,那也不重要。

作为旁注,所以我的回答更完整一点:那天你会想做这样的事情:

echo "Welcome $names!";

PHP会将您的代码解释为您试图使用$names变量——这个变量并不存在。 -注意,只有在字符串中使用" not "时它才会起作用。

那天,你需要使用{}:

echo "Welcome {$name}s!"

不需要退回到连接。

还要注意你的第一个语法:

echo "Welcome ".$name."!";

可以优化,避免连接,使用:

echo "Welcome ", $name, "!";

(但是,就像我之前说的,这并不重要…)

1 -除非你在做成千上万次的拼接和插值——这可能不是完全的情况。

不要连接。这是不需要的,我们的逗号作为echo可以接受多个参数

echo "Welcome ", $name, "!";

关于使用单引号或双引号,差异可以忽略不计,您可以使用大量字符串进行测试。