我是否可以将单引号,双引号的Heredoc语法或nowdoc语法字符串直接放入使用字符串的函数参数中?

问题描述

| 我是否可以将单引号,双引号的Heredoc语法或Nowdoc语法字符串直接放入函数中,这些函数的参数需要使用诸如
strlen(\'string text\')
strlen(\"some more string text\")
这样的字符串,而不要包含诸如including2ѭ这样的变量? 如果不是为什么?     

解决方法

除非函数期望通过引用传递字符串变量,否则您可以这样做:
// \'&\' means that argument is passed by reference
function requestStringAsVariable(&$str) {
    $str = \'*\' . $str . \'*\';
}

$str = \'test\';
requestStringAsVariable($str);
echo $str; // outputs \'*test*\';

requestStringAsVariable(\'foo\'); // won\'t work,as function expects variable
    ,是的,您可以使用任何语法创建字符串。 但是请注意,在将Heredoc / nowdoc语法与函数调用一起使用时,请务必小心:字符串的最后一行除标识符外不能包含任何内容:
var_dump(<<<HERE
foo
HERE
);
    ,是。您可以。您不需要将其存储在变量中