Dynamisches Array erstellen

soa

Erfahrenes Mitglied
Hallo,

komme hier irgendwie nicht wirklich weiter.

Ich möchte zur Laufzeit mehrere Arrays erstellen :

Ich habe es mit eval() versucht...

Der Name des Array soll $array1 , $array2 etc sein.

Das Array soll dann mit dem entsprechenden Wert befüllt werden.

Bsp: $array2[] = $kuerzellist[$count];

PHP:
 eval('$array' . $find[0][] . ' = $kuerzellist[$count]  ;');

Die beiden [] Klammern geben mir immer einen Fehler ...


Wie macht man es richtig ?

VG
 
Wie wäre es, wenn du einfach ein mehrdimensionales Array verwendest?

PHP:
$array = array();
// Schleife oder sonstwas
$tmp[] = $kuerzellist[$count;
// weiterer Code
$array[] = $tmp;
Da kommt dann so etwas raus:
ein 2 dimensionales Array raus, da kannst du dann natürlich noch mehr Schleifen rein hauen, wie du lustig bist, um mehr Ebenen zu erhalten.
Ansonsten kannst du es auch mal mit array_push() versuchen.

[EDIT]
PHP:
eval('$array' . $find[0] . '[] = $kuerzellist[$count]  ;');
Geht das?
 
Möglich wäre noch:

PHP:
<?
$variablenName = 'neueVariable';
${$variablenName . "1"} = 'Hallo Welt';
echo $neueVariable1;
?>

Aber ich würde auch einem mehrdimensionalen Array raten... Ist viel sinnvoller und auch einfacher in einer späteren Abarbeitung zu handhaben.


Gruß

.:lay-z-cow:.
 
PHP:
eval('$array' . $find[0] . '[] = $kuerzellist[$count]  ;');


So ist es :-) Das klappt...

Die anderen Sachen muss ich mir mal in Ruhe anschauen.

Viellelicht ist eval hier wirklich nicht die optimale Lösung.


Vielen Dank.
 
Wo kommen die Werte des $find-Arrays her? Du solltest nämlich sehr vorsichtig sein, wenn du die eval()-Funktion benutzt. Wenn es sich dabei um Benutzereingaben handelt, kann darüber theoretisch beliebiger Code ausgeführt werden. Da solltest du doch lieber das Konzept der variablen Variablen nehmen oder die Werte zumindest ausreichend validieren (siehe Syntax von Variablen).
 
  • Gefällt mir
Reaktionen: soa
Vielen Dank Markus.

Das mit den variablen Variablen ist die wesentlich schönere Variante. Kannte ich ehrlich
gesagt noch nicht.

Viele Grüße
 
Zurück