PHP 字符串插值,在字符串中使用变量

字符串插值是用变量的内容替换字符串中的变量的过程。
当字符串用双引号括起来或者使用heredoc 时,这种变量插值是可能的。

变量可以使用简单的语法包含在字符串中,也可以用大括号将变量括起来,也称为复杂语法。
使用大括号允许我们明确指定变量名称的结尾,否则可能会与字符串混淆。

从简单的语法开始:

$some_more_text = 'and some more text';
$my_variable = "This variable contains some text, $some_more_text";
//Output the interpolated variable
echo $my_variable;

仅当字符串包含需要解释的变量或者转义序列时才使用双引号。

当我们获得围绕变量名称本身的文本时,上述语法将不起作用。
为了解决这个问题,我们应该使用复杂的curl语法:

$alphabet_fragment = ', h, i, j, k';
$alphabet = "a, b, c, d, e, f, g{$alphabet_fragment}, l, m, n...";
echo $alphabet;

插值的双引号

一般来说,使用简单的语法进行插值是不好的,因为你很容易意外地破坏插值,而且它也可能不利于你的代码的可读性。

我们可以采取以下措施来提高一致性并避免破坏插值:

  • 使用字符串连接将变量与字符串组合。
  • 使用花括号语法进行插值。

就我个人而言,我更喜欢在使用heredocs 加载模板文件或者处理较大字符串时使用连接对小字符串进行插值,并使用Curly Brackets。

使用串联:

$alphabet_fragment = ', h, i, j, k';
$alphabet = 'a, b, c, d, e, f, g' . $alphabet_fragment . ', l, m, n...';

在heredocs中使用大括号

当我们使用 heredoc 语法时,我们最常使用大字符串。
这很有用的一种情况是将 HTML 模板保存在 PHP 变量中。

然而,heredocs 也增加了可变文本混合的机会,这使得复杂的语法在 heredocs 中特别有用:

$template = <<<_LOADTEMPLATE
<p>{$some_variable['hallo_world']}</p>
_LOADTEMPLATE;
//End of the heredoc
日期:2020-06-02 22:15:57 来源:oir作者:oir