字符串插值是用变量的内容替换字符串中的变量的过程。
当字符串用双引号括起来或者使用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