richtige Schreibweise bei Array
Pete
- php
0 Cheatah0 Gerhard Knabe0 Benjamin Wilfing0 Pete
Hallo,
ich hab da eine Frage. Wie ist die richtige Schreibweise für einen Array:
$array["name"] oder
$array[name] oder
$array['name'] bzw. mit Variablen
$array["$var"] oder
$array[$var] oder
$array['$var']
Was ist richtig und was passiert bei falscher Schreibweise? Also, hat das irgendwelche Auswirkungen auf den Wert/Inhalt? Vielleicht könnt Ihr mir da weiterhelfen...
Vielen Dank
Pete
Hi,
$array["name"] oder
$array['name'] bzw. mit Variablen
$array[$var] oder
Was ist richtig
die da sind richtig.
und was passiert bei falscher Schreibweise?
Bei Variablen mit Anführungszeichen besteht die Gefahr, dass nicht nach dem Inhalt der Variablen gesucht wird, sondern nach '$'+'v'+'a'+'r'. Bei "$array[name]" hast Du _mindestens_ einen äußerst unsauberen Programmierstil, weil Du hier eine Konstante propagierst, die es nicht gibt.
Also, hat das irgendwelche Auswirkungen auf den Wert/Inhalt?
Nein - nur darauf, dass der Wert evtl. nicht gefunden wird.
Cheatah
Welche Schreibweise richtig ist, hängt von der Art des Schlüssels ab. Ist der Schlüssel eine konstante Zeichenkette sind die Schreibweisen $array["name"] und $array['name'] richtig. $array[name] ist nur dann richtig, wenn name mit define als Konstante definiert ist. Allerdings funktioniert das trotzdem, da PHP eine unbekannte Konstante in eine gleichnamige Zeichenkette umwandelt. Das wäre aber eine böse Falle, wenn man später diese Konstante irgendwo anders definiert.
Ist der Index in einer Variablen abgelegt sind die Schreibweisen $array[$var] und $array["$var"] richtig. Falsch dagegen ist $array['$var'], weil $var da als Zeichenkette interpretiert wird.
MfG
GK
Hallo Pete,
ich hab da eine Frage. Wie ist die richtige Schreibweise für einen Array:
Es kommt ganz darauf an, was du damit machen willst, alle aufgeführten Schreibweisen _können_ unter bestimmten Umständen richtig sein.
$array["name"] oder
enthält den Wert des Elements "name" im Array $array.
$array[name] oder
wenn das funktionieren soll, muss zuvor eine Konstante definiert worden sein (siehe define() [1]) und würde dann den Wert des Elements <Wert_der_Konstante> in dem Array enthalten. Existiert diese Konstante nicht, wirst du unter Garantie einen Fehler bekommen.
$array['name'] bzw. mit Variablen
hat im Prinzip erstmal die gleiche Auswirkung wie die erste Schreibweise ganz oben. Nur musst du generell folgendes beim Definieren von Strings beachten:
In Strings, die in Singlequotes angegeben sind ('') werden Steuerzeichen wie der Zeilenumbruch \n, der Wagenrücklauf \r sowie Variablen _nicht interpretiert_, der String enthält exakt das, was darin steht. Bei Doublequotes ist das nicht der Fall. Beispiele:
"bla" -> enhält den Text "bla"
'bla' -> enhält den Text "bla"
"$var" -> enthält den Wert der Variable $var
'$var' -> enthält den Text "$var"
In dem String "bla\nbla2" wird der Zeilenumbruch später interpretiert,
in dem String 'bla\nbla2" hingegen nicht, er enthält dann den Text "bla\nbla2"
$array["$var"] oder
$array[$var] oder
damit dürfte diese Schreibweise geklärt sein, die beiden sind quasi identisch - damit sprichst du das Element <Wert_der_Variable> im Array an.
$array['$var']
mit dieser Schreibweise sprichst du das Element '$var' im Array an.
Was ist richtig und was passiert bei falscher Schreibweise? Also, hat das irgendwelche Auswirkungen auf den Wert/Inhalt? Vielleicht könnt Ihr mir da weiterhelfen...
Wie du siehst und ich schon gesagt habe, es kommt ganz darauf an, was du brauchst. Ich persönlich schreibe z.B. Strings generell in Singlequotes, dann kommt man zum Beispiel gar nicht in die Gefahr, dass PHP durch ein Dollarzeichen im String "verwirrt" ist und versucht, die darauf folgende Zeichenfolge als Variable zu interpretieren.
HTH
Grüße aus Darmstadt,
Benjamin
Hi!
wenn das funktionieren soll, muss zuvor eine Konstante definiert worden sein (siehe define() [1]) und würde dann den Wert des Elements <Wert_der_Konstante> in dem Array enthalten. Existiert diese Konstante nicht, wirst du unter Garantie einen Fehler bekommen.
Nein, wenn die Konstante nicht existiert passiert nichts, es klappt so wie Du es willst, nur _wenn_ aus versehen irgendwo so eine Konstante existiert und Du denkst nicht dran _dann_ bekommst Du Probleme.
Siehe auch: http://www.php.net/manual/de/language.types.array.php#language.types.array.donts
Und für Pete vielleicht zur Ergänzung: http://www.php.net/manual/de/language.types.string.php
Grüße
Andreas
Vielen Dank für Eure schnellen und ausführlichen Antworten.
Pete