dedlfix: eval nicht mit mehrdimensionalen Arrays möglich?

Beitrag lesen

Hi!

Es ist falsch, einfach nur geschweifte Klammern drumherum zu machen. Denn die Variante ohne Klammern erkennt den Array-Index als String, während die Variante mit Klammern den Array-Index als undefinierte Konstante erkennt - und dadurch eine Notice geworfen und ein String mit dem Inhalt des Konstantennamens angenommen wird. Alternativ ist die Konstante schon definiert worden, dann wird deren Inhalt verwendet.

Danke für die Richtigstellung. Diese Parserei bei komplexen Gebilden ist auch noch komplex und etwas verwirrend implementiert.

  $foo = $bar['qux']; // mit Anführungszeichen  
  $foo = "... $bar[qux]..."; // ohne Anführungszeichen  
  $foo = "... {$bar['qux']}..."; // wieder mit Anführungszeichen

Als Alternative kann man sich der Patzhalter-Funktion sprintf() bedienen:

$foo = sprintf('...%s...', $bar['qux']);

Übrigens: Beim Entwickeln das error_reporting auf E_ALL stehen zu haben, hilft obige Fehler zu erkennen und zu korrigieren.

Lo!