Gunther: eval nicht mit mehrdimensionalen Arrays möglich?

Beitrag lesen

Hi!

Das würde ich nicht mit PHP-Variablen machen sondern mit Platzhaltern. Diese lassen sich im eval()-los suchen und ersetzen.

Wenn du ein Array mit den Platzhaltern als Keys hast, kannst du strtr() in der zweiten Variante verwenden.
Auch mehrstufige Arrays sind kein großes Problem. Die Platzhalter sehen beispielsweise so aus: <bereich><name1> und <bereich><name2>. Ein
  array("bereich" => array("name1" => "wert1", "name2" => "wert2"))
müsste nur nach
  array("<bereich><name1>" => "wert1", "<bereich><name2>" => "wert2">);
umgeformt werden, was mit zwei geschachtelten foreach-Schleifen und etwas Stringbearbeitung geht.

Ja, klingt gut. Zumindest verstehe ich den Ansatz und denke, dass ich das auch hinkriegen sollte.

Zum ursprünglichen Problem: Wenn "...$var[foo][bar]..." als Ergebnis "...Array[bar]..." liefert, so ist nur $var[foo] als Variable erkannt worden. Man kann geschweifte Klammern um die Variablen legen, wenn PHP sie nicht eindeutig in einem ""-String erkennt, also "...{$var[foo][bar]}...". Aber wie gesagt, versuch es lieber ohne eval().

Ich sag' ja - es ist eindeutig zu warm. Das ist die Antwort auf meine Ausgangsfrage - besten Dank!

Und da ich (meistens) auf das höre, was mir hier im Forum geraten wird, werde ich es mal ohne eval() probieren. Wobei mir wie gesagt immer noch nicht ganz klar ist, warum man_speziell_in diesem Fall eben nicht eval() verwenden sollte?

Gruß Gunther