Подтвердить что ты не робот

Как использовать 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 через этот документ.

4b9b3361

Ответ 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 без особо уродливого форматирования массива.