我需要通过here-doc将更多的多行文本放入PHP关联数组中。它看起来像这样:
$data = [
"x" => "y",
"foo" => "bar",
/* ... other values ... */
"idx" = <<< EOC
data data data data
data data data data
data data data data
EOC;
"z" => 9,
/* ... more values ... */
];
我无法弄清楚如何通过here-doc将多行文本中的元素“idx”放在$ data数组中。
答案 0 :(得分:26)
有几个问题,它必须如下所示:
$data = [
"x" => "y",
"foo" => "bar",
/* ... other values ... */
// you need to use '=>'
"idx" => <<<EOC
data data data data
data data data data
data data data data
EOC
,"z" => 9, // you can't end it with a semicolon, WHY EVER! and the comma needs to be on a new line
/* ... more values ... */
];
这是一些hacky和笨重的PHP代码。我不建议使用它,它充满了问题(可能由词法分析器引起)。最好坚持好的旧琴弦。
答案 1 :(得分:5)
我遇到了同样的问题,我最终这样做了:
$data = [
"x" => "y",
"foo" => "bar",
/* ... other values ... */
"z" => 9,
/* ... more values ... */
];
$data["idx"] = <<<EOC
data data data data
data data data data
data data data data
EOC;
我的想法是,我可以使用heredoc,而不会使用非常难看的数组格式。
使用PHP 7.3,事情有improved significantly。你现在可以这样做:
$data = [
"x" => "y",
"foo" => "bar",
/* ... other values ... */
"idx" => <<<EOC
data data data data
data data data data
data data data data
EOC,
"z" => 9,
/* ... more values ... */
];