2012-06-17 12 views
13

Tengo una pieza más grande de texto de varias líneas que necesito poner en una matriz asociativa PHP a través de aquí-doc. Se ve así:¿Cómo usar un PHP here-doc en una matriz asociativa?

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

no puedo encontrar la manera de poner ese elemento "idx" con el texto de varias líneas en la matriz de datos a través de un $ aquí-doc.

Respuesta

18

Hay varios problemas, tiene que tener este aspecto:

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

Eso es algo de código PHP hacky y torpe. No recomiendo usarlo, está lleno de problemas (tal vez causados ​​por el lexer). Es mejor que te apegues a las buenas cuerdas.

3

que tenían el mismo problema y que terminé haciendo esto:

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

La idea es que puedo usar heredoc sin formato gama muy feo.

Cuestiones relacionadas