20

我有一大段多行文本,我需要通过 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 数组中。

4

2 回答 2

29

有几个问题,它必须看起来像这样:

$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 代码。我不推荐使用它,它充满了问题(可能是由词法分析器引起的)。最好坚持使用好的旧琴弦。

于 2012-06-17T00:22:56.693 回答
8

在 PHP 7.3 中,事情有了显着改善。您现在可以这样做:

$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 ... */
];

我遇到了同样的问题,我最终这样做了(旧解决方案):

$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,而不需要非常难看的数组格式。

于 2014-07-31T11:50:20.890 回答