2012-06-17 22 views
13

Ho un pezzo più grande di testo multilinea che ho bisogno di inserire in un array associativo di PHP attraverso un here-doc. Ecco come si presenta:Come utilizzare un PHP qui-doc in un array associativo?

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

io non riesco a capire come mettere quell'elemento "IDX" con testo su più righe nella matrice $ dati attraverso un qui-doc.

risposta

18

Ci sono diversi problemi, deve assomigliare a questo:

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

Ecco po 'di codice PHP hacky e goffo. Non consiglio di usarlo, è pieno di problemi (forse causato dal lexer). Meglio attenersi alle buone vecchie stringhe.

3

Ho avuto lo stesso problema e ho finito per fare questo:

$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; 

L'idea è che posso usare heredoc senza formattazione gamma molto brutto.

Problemi correlati