Pete: richtige Schreibweise bei Array

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

  1. 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

    --
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
  2. 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

  3. 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

    --
    http://aktuell.de.selfhtml.org/tippstricks/beitrag.htm
    SELF-Code: sh:) fo:) ch:} rl:| br:> n4:( ie:% mo:) va:) de:> zu:) fl:| ss:) ls[
    1. 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

  4. Vielen Dank für Eure schnellen und ausführlichen Antworten.

    Pete