Как использовать PHP здесь-doc в ассоциативном массиве?
У меня есть более крупный фрагмент многострочного текста, который мне нужно включить в ассоциативный массив PHP через here-doc. Это выглядит так:
$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 ... */
];
Я не могу понять, как поместить этот элемент "idx" с многострочным текстом в массив $data через этот документ.
Ответы
Ответ 1
Есть несколько проблем, это должно выглядеть так:
$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 ... */
];
Это какой-то хакерский и неуклюжий PHP-код. Я не рекомендую его использовать, это полно проблем (может быть, вызвано лексером). Лучше придерживаться старых добрых строк.
Ответ 2
У меня была та же проблема, и я закончил это:
$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 без особо уродливого форматирования массива.