PHP - Array Gültigkeit?

Alice

Erfahrenes Mitglied
Hallo.

Ich habe folgende Frage.

Ich habe ein Array:
PHP:
$Array_Liste = array
(
   'Option_1' => array(1, 2, 3),
   'Option_2' => array(4, 5, 6),
   'Option_3' => array(7, 8, 9),
);

$Option_1_1 = $Array_Liste[$Option_Field][0];
$Option_1_2 = $Array_Liste[$Option_Field][1];
$Option_1_3 = $Array_Liste[$Option_Field][2];

Wie man im Code sieht, muss "$Option_Field" vorhanden sein, damit die drei Variablen überhaupt einen Sinn machen.

Was ist denn nun, wenn ich aber "$Option_Field" später setze?

PHP:
$Array_Liste = array
(
   'Option_1' => array(1, 2, 3),
   'Option_2' => array(4, 5, 6),
   'Option_3' => array(7, 8, 9),
);

$Option_1_1 = $Array_Liste[$Option_Field][0];
$Option_1_2 = $Array_Liste[$Option_Field][1];
$Option_1_3 = $Array_Liste[$Option_Field][2];

$Option_Field = 'Option_1';

Ist das ungültig? Muss "$Option_Field" VORHER gesetzt werden?
 
Ja.
Denn bei der Zeile '$Option_1_1 = $Array_Liste[$Option_Field][0];' weiss ja PHP ja nicht was $Option_Field ist. Das währe ansonsten als ob du heute die Lottozahlen von Morgen wüsstest...

Ich meine, was soll der Code in diesem Fall den machen?
PHP:
$Option_1_1 = $Array_Liste[$Option_Field][0];
$Option_1_2 = $Array_Liste[$Option_Field][1];
$Option_1_3 = $Array_Liste[$Option_Field][2];

$Option_Field = 'Option_1';
//und gleich wieder überschreiben
$Option_Field = 'Option_2';

Schreib mal was über den Zusammenhang, dann finden wir ev. eine Lösung.
 
Ja, es muss vorher gesetzt werden, sonst bekommst du ein Notice, das der Index in $Array_Liste ungültig ist und natürlich das $Option_Field nicht definiert ist.

Das sieht man aber erst, wenn man mittels error_reporting(E_ALL) und ini_set('display_errors', 1) die Fehlerausgabe einschaltet.
 
Hallo. :)

Ich habe das ganze leider etwas falsch formuliert.

Eigentlich meine ich so etwas:
PHP:
$Option_Field = 'Option_2';

...
...
...

$Array_Liste = array
(
   'Option_1' => array(1, 2, 3),
   'Option_2' => array(4, 5, 6),
   'Option_3' => array(7, 8, 9),
);

$Option_1_1 = $Array_Liste[$Option_Field][0];
$Option_1_2 = $Array_Liste[$Option_Field][1];
$Option_1_3 = $Array_Liste[$Option_Field][2];

...
...
...

$Option_Field = 'Option_1';

Was würde jetzt ausgegeben werden?
 
Gar nichts, da du keinen echo Befehl hast.

Ist allerdings egal wo du echo $Option_1_1 hinschreibst (vorrausgesetzt nach der Initialisierung),
es wird immer mit dem initialisierten Wert ausgegeben.


Warum probierst du solche Sachen eigentlich nicht einfach mal aus? Ein bisschen rumexperimentieren hilft selbstständiger zu arbeiten, und es geht auch ganz fix, du musst dann nicht lange auf eine Antwort warten :)
 
Hallo. :)

Ich habe den Code (fast genau wie im Beispiel) natürlich schon längst ausprobiert und es wird mit einem echo "Option_2" ausgegeben, was ich natürlich nachvollziehen kann.

Jedoch habe ich ein Skript wo ich den Wert, warum auch immer, manipulieren kann, aber nicht weiss warum. Leider besteht das Skript aus knapp 4200 Zeilen Code und ich kann nicht genau nachvollziehen wieso das spätere verändern der Variable funktioniert.
 
Eine Ursache können natürlich Referenzen sein.
Ansonsten überschreibst du die Variable wahrscheinlich einfach nochmal.
 
Zurück