Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Assoziative Arrays - Key in Hochkommata oder nicht?

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Erledigt] Assoziative Arrays - Key in Hochkommata oder nicht?

    Guten Tag zusammen,

    ich möchte gerne wissen, welche der folgenden Schreibweisen "richtiger" ist bzw. empfohlen wird:

    PHP-Code:
    <?php

    $sql 
    "SELECT name FROM kunden WHERE id=4711";
    $erg mysql_query($sql);
    $row mysql_fetch_array($erg,MYSQL_ASSOC);

    $name $row[name];  // Ist das ausreichend?
    $name $row['name']; // Ist es besser, Hochkommas zu verwenden
    $name $row["name"]; // oder besser Doppelte Hochkommas ?

    ?>
    Beim Lesen von fremdem Code sind mir alle Schreibweisen begegnet, und alle scheinen gleich gut zu funktionieren. Die erste Schreibweise erscheint mir aber unlogisch. Was also ist richtig bzw. besser.
    [PHP]if ($var != 0) {
    $var = 0;
    }[/PHP]

  • #2
    Bei einem assoziativen Array bestehen die Schlüssel aus Strings, demnach ist die Schreibweise ohne Hochkomma falsch, funktioniert aber durch die Gutmütigkeit von PHP.
    Des Weiteren besteht der Unterschied zwischen einfachen und doppelten Hochkommas darin, dass einfache nicht nach Variablen und Escapesequenzen (mit zwei Ausnahmen) durchsucht werden.
    Code:
    $variable = 'hallo';
    // Verhalten:
    'bla' == 'bla'
    'bla$variable' == 'bla$variable'
    "bla$variable" == 'blahallo'
    So verhält sich das auch bei Indexen assoziativer Arrays. Da einfache Hochkommas nicht geparst werden, ist bei deren Verwendung die Performance minimal höher.

    Kommentar


    • #3
      Dankesehr.

      Ich dachte mir schon, dass die erste Schreibweise nur zufällig funktioniert und werde sie vermeiden.
      [PHP]if ($var != 0) {
      $var = 0;
      }[/PHP]

      Kommentar


      • #4
        PHP: Arrays - Manual
        Why is $foo[bar] wrong?

        Always use quotes around a string literal array index. For example, $foo['bar'] is correct, while $foo[bar] is not. But why?

        Kommentar


        • #5
          Wörter ohne Hochkomma werden als Konstante interpretiert. Wenn eine Konstante jedoch nicht existiert, wird die Konstante mit ihrem eigenen Namen ersetzt. Dieses Verhalten kann PHP in jeder neuen Version ändern, so dass man sich nicht darauf verlassen sollte. Auch unter dem Aspekt der Wartbarkeit gaukelt man einem anderen Entwickler eine Konstante vor, die gar nicht existiert.

          Kommentar


          • #6
            Nochmals danke für die Erklärung und auch für den Link. Manchmal weiß man nicht, mit welchem Begriff man wo suchen soll.
            Ich markiere das dann mal als erledigt.
            [PHP]if ($var != 0) {
            $var = 0;
            }[/PHP]

            Kommentar


            • #7
              Das Verwenden nicht definierter Konstanten hat übrigens auch eine Notice zur Folge.
              Also ich würde an deiner Stelle möglichst Single-Quotes (') nehmen und wenn Variablen drin vorkommen können/sollen, Double-Quotes("). Das bringt keinen direkten Vorteil, aber PHP durchsucht Single-Quotes nicht nach Variablen.
              Refining Linux: “[url=http://www.refining-linux.org/archives/65/Performing-push-backups-Part-1-rdiff-backup/]Performing Push Backups – Part 1: rdiff-backup[/url]”

              Kommentar

              Lädt...
              X