2012-06-17 2 views
13

У меня есть большой кусок многострочного текста, который мне нужно включить в ассоциативный массив PHP через 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 ... */ 
    ]; 

Я не могу понять, как поставить этот элемент «IDX» с многострочным текстом в массиве $ данных через здесь-док.

ответ

18

Есть несколько проблем, он должен выглядеть следующим образом:

$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 код. Я не рекомендую использовать его, он полон проблем (может быть, вызван лексером). Лучше придерживаться старых добрых строк.

3

У меня была такая же проблема, и я в конечном итоге делает это:

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

Смежные вопросы