20

ヒアドキュメントを介して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 ... */
    ];

ヒアドキュメントを介して、その要素「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;

アイデアは、非常に醜い配列フォーマットなしでヒアドキュメントを使用できるということです。

于 2014-07-31T11:50:20.890 に答える