eckige Klammern schachteln

megatom

Mitglied
Aloah !
Wollte gestern folgendes machen :
$var1[$var2[feld]]
Aber das gibt immer einen Fehler...
$var1[$var2] hingegen klappt.
Kann ich das mit einer anderen Schreibweise doch hinkriegen ?
 
Also ich denke mal es war nur ein Tippfehler aber es muss definitiv so funktionieren

PHP:
$var1[$var2][feld]
$var1[$var2]['feld'] // besser natürlich noch mit Anführungszeichen
 
Verschachtelte Arrays werden so dargestellt:

PHP:
$array = array(array(array('1', '2')));

echo $array[0][0][0]; # gibt 1 aus
echo $array[0][0][1]; # gibt 2 aus

Edit: Zu spät ;)

Und es muss sogar mit Anführungszeichen geschrieben werden, sonst passiert ein Fehler. (ausgenommen natürlich man verwendet Variablen als Feldbenenner)

Nur Zahlen kann man ohne Anführungszeichen schreiben.
 
Hmm ich glaube das ist ein anderes Problem was ihr löst.
Also folgende Ausgangssituation:
Ich lese aus der Datenbank ein array aus, daraus ergibt sich mir:
PHP:
$best_alle[komp_cat]
oder von mir aus auch
PHP:
$best_alle['komp_cat']
, beides t einwandfrei ;)
dieses kann den Wert 1-4 annehmen.
Desweiteren habe ich ein Array:
PHP:
$komp_array  = array ( 
		  1 => "WSA", 
		  2 => "TNW", 
		  3 => "Best", 
		  4 => "PC", 
		  );
Nach deinem Vorschlag müsste es dann so heissen:
PHP:
$komp_array[$best_alle]['komp_cat']
da ja
PHP:
$komp_array[$best_alle['komp_cat']]
nicht t.
Bei deiner Version bekomme ich allerdings den Fehler :
Warning: Illegal offset type in /www/htdocs/megatom/faq.php on line 290
Und nun ?
 
Gib mit [phpf]print_r[/phpf] oder [phpf]var_dump[/phpf] deinen Array mal aus und schau ihn dir selbst an, dann sollte sich auch ergeben, wie er zusammengesetzt ist.
 
OK. Alarm zurück.
Es geht...
Meine Version war schon richtig.
Seltsamerweise nur wenn ich
PHP:
echo $komp_array[$best_alle[komp_cat]];
mache.
Ich hatte es aber zufällig in einem laufenden Text eingebaut, was normalerweise auch keine Probleme macht:
PHP:
echo "bla blub $komp_array[$best_alle[komp_cat]]";
Keine Ahnung warum das da nicht geht...
Ausserdem kann ich hier nicht das Wort f u n z t schreiben ;)
 
Weil innerhalb der Anführungszeichen nur einfache Arrays so verwendet werden können. Wenn du es dennoch so machen wolltest müsstest du es so schreiben:

PHP:
echo "bla blub ${$komp_array[$best_alle[komp_cat]]} bli bla";
 
Du könntest es auch einfach so schreiben:


PHP:
echo "bla blub ".$komp_array[$best_alle['komp_cat']]."blabla";


Gruß GalaxyWarrior
 
Genau das tat ich ja jetzt auch :)
Aha was hat es den mit den geschweiften Klammern auf sich?
Hab ich in dem Zusammenhang noch nie gesehen...
 
Man sagt dem PHP Parser "hier kommt ne Variable und kein Text" soweit ich mich erinnere kann man auch Funktionen aufrufen usw. Verständlicher ist es in der regel natürlich es komplett auszuklammern. Auch wegen des Highlightings wegen.
 
Zurück