【问题标题】:How to use a PHP here-doc in an associative array?如何在关联数组中使用 PHP here-doc?
【发布时间】:2012-06-19 13:06:12
【问题描述】:

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

【问题讨论】:

    标签: php arrays associative-array heredoc


    【解决方案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 ... */
    ];
    

    这是一些 hacky 和笨拙的 PHP 代码。我不推荐使用它,它充满了问题(可能是由词法分析器引起的)。最好坚持使用好的旧字符串。

    【讨论】:

    • 使用[ "x" =&gt; "y"] 代替array("x" =&gt; "y") 似乎是最好的解决方案。
    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2020-03-22
      • 2018-03-31
      • 2020-02-15
      • 1970-01-01
      • 2012-12-12
      • 1970-01-01
      • 1970-01-01
      • 2011-02-23
      • 1970-01-01
      相关资源
      最近更新 更多