Christian Seiler: Über Array Indiz assoziative "Ansprechweise" erhalten?

Beitrag lesen

Hallo,

angenommen ich definiere folgendes Array:
$test[bla]=“hallo“;
$test[blubb]=“welt“;

Das ist schonmal zum einen falsch und zum anderen schlechter Stil. Falsch deswegen, da “ kein Stringbegrenzer in PHP ist, " oder ' dagegen schon. Ferner sollten assoziative Indizes *immer* in Anführungszeichen gesetzt werden, sonst ersetzt Dir PHP irgendwann noch ne Konstante da rein - ferner gibt's ordentlich Meldungen auf einem System mit E_ALL-Fehlermeldungseinstellungen -> korrekt wäre also $text['bla'] = 'hallo'; etc.

Dann kann ich ja $test[bla] über $test[0] und $test[blubb] über $test[1] ansprechen.

Huch? Wie das denn? Wenn Du $test['bla'] = 'hallo'; machst dann ist $test[0] nicht definiert (wenn Du $test[bla] = 'hallo' machst und bla eine Konstante ist, die auf den Wert 0 expandiert, dann schon, aber ich hoffe doch stark, dass Du das nicht meinst...), weswegen $test[0] eine Notice ausspuckt und NULL ergeben wird - aber definitiv *nicht* den Wert von 'hallo' - dito bei $test[1].

Aber wie könnte ich denn dynamisch ausgeben/in erfahrung bringen, das $test[0] auch über $test[bla] angesprochen werden kann?

Das anlegen eines assoziativen Index führt *nicht* dazu, dass ein numerischer Index als Alias darauf angelegt wird. Damit ist auch Deine Problemstellung irgendwie hinfällig. Es gibt einige PHP-Funktionen, die derartige Arrays zurückgeben (Datenbankfunktionen, die sowohl numerische als auch assoziative Indizes für die Rückgabespalten erzeugen, each(), bestimmt noch ein paar andere) - das ist aber ein Zusatz dieser Funktionen, aber kein Standardverhalten von PHP.

Viele Grüße,
Christian

--
"I have always wished for my computer to be as easy to use as my telephone; my wish has come true because I can no longer figure out how to use my telephone." - Bjarne Stroustrup