[BELEHRUNG] - Richtiges Trennen von Strings und Variablen

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

  • [BELEHRUNG] - Richtiges Trennen von Strings und Variablen

    Kurzes Beispiel:
    PHP-Code:
    $name "Thomas";

    // empfohlen
    echo "Hallo, mein Name ist " $name;

    // fehleranfällig
    echo "Hallo, mein Name ist $name";

    // empfohlen
    echo $name;

    // sehr fehleranfällig, vor allem in Kombination mit '
    echo "$name"
    Das gleiche gilt für Arrays und globals:
    PHP-Code:
    $mein_array = array("name" => "Thomas""wohnort" => "wrn");

    //empfohlen
    echo $mein_array["wohnort"];

    //fehleranfällig
    echo $mein_array[wohnort];

    //das gleiche gilt auch für $_GET, $_POST, $_COOKIE

    //empfohlen
    echo $_GET["s"];

    //fehleranfällig
    echo $_GET[s]; 

    Eine Ausnahme gibt es, wo es erlaubt ist, keine Anführungszeichen zu schreiben:
    PHP-Code:
    $mein_array = array("name" => "Thomas""wohnort" => "wrn");

    // Auf wohnort wird "name" gespeichert
    define("wohnort""name");

    echo 
    "Hallo " $mein_array[wohnort];    // Hallo Thomas
    echo "Hallo " $mein_array["wohnort"];    // Hallo wrn 
    Weitere Informationen hier


    Um noch den Unterschied zwischen ' und " zu erläutern:
    PHP-Code:
    // Man will in seinen Text [b]\n[/b] schreiben
    echo 'In meinen Text möchte ich \n schreiben';   // funktioniert
    echo "In meinen Text möchte ich \\\n schreiben";   // funktioniert
    echo "In meinen Text möchte ich \n schreiben";   //funktioniert nicht

    // das gleiche gilt für Variablen
    // zu Testzwecken geb ich der Variable $name einen Wert
    $name 'Thomas';     // (bei einfacher Textzuweisung ist es egal, ob man ' oder " verwendet)

    // man möchte jetzt einen Text schreiben, wo [b]$name[/b] vorkommt
    echo 'Hallo $name';       // Hallo $name
    echo "Hallo \$name";     // Hallo $name
    echo "Hallo $name";     // Hallo Thomas (<- nicht empfehlenswert) 
    Zuletzt geändert von tomstig; 15.04.2006, 18:09.
    Important: alt bei <img> ist immer erforderlich · Strings richtig trennen/verbinden · Kiddie-Code hat keine Chance

  • #2
    Re: [BELEHRUNG] - Richtiges Trennen von Strings und Variablen

    PHP-Code:
    // richtig
    echo "Hallo, mein Name ist " $name
    falsch
    PHP-Code:
    // richtig
    echo 'Hallo, mein Name ist ' $name
    PHP-Code:
    $mein_array = array("name" => "Thomas""wohnort" => "wrn");

    //richtig
    echo $mein_array["wohnort"]; 
    falsch
    PHP-Code:
    // richtig
    echo $mein_array['wohnort']; 

    PHP-Code:
    //richtig
    echo $_GET["s"]; 
    und wieder falsch
    PHP-Code:
    echo $_GET['s']; 

    Wenn dann auch ganz richtig und nicht nur halb...

    Abgesehen von einer Ausnahme, wenn man nämlich Whitespace-Zeichen einfügen will, also z.B: \n
    dann MUSS man " nehmen, weil sie bei ' einfach ausgegeben werden:
    PHP-Code:
    echo "test\ntest"// ergibt
    /*
    test
    test
    */
    echo 'test\ntest'// ergibt
    /*
    test\ntest
    */ 

    Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

    bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
    Wie man Fragen richtig stellt

    Kommentar


    • #3
      meine herren, die begriffe "richtig" und "falsch" sind zuweilen zu radikal.

      statt "falsch" würde ich sagen - "fehleranfälliger" und für "richtig" - "empfehlenswerter" (und nur minimal performanter).

      schreib lieber noch ein paar takte zu '$selten_richtig'.
      Zuletzt geändert von penizillin; 13.08.2005, 18:56.

      Kommentar


      • #4
        Ob du ' oder " verwendest, ist egal, andererseits hätt ich gerne einen seriösen Gegenbeweis.

        Ich nehme standardmässig ' also
        PHP-Code:
        $name 'Thomas';
        echo 
        'Hallo, mein Name ist ' $name;

        //arrays:
        $mein_array = array('Name' => 'Thomas''Wohnort' => 'wrn');
        echo 
        $mein_array['name']; 
        insofern juckt mich deine Aussage wenig.

        Ich wollte nur die Leute, die
        PHP-Code:
        echo "$name"
        schreiben, nicht mit dem Apostrophe überfordern.
        Important: alt bei <img> ist immer erforderlich · Strings richtig trennen/verbinden · Kiddie-Code hat keine Chance

        Kommentar


        • #5
          Original geschrieben von penizillin
          meine herren, die begriffe "richtig" und "falsch" sind zuweilen zu radikal.

          statt "falsch" würde ich sagen - "fehleranfälliger" und für "richtig" - "empfehlenswerter" (und nur minimal performanter).
          ayay, wir geändert...
          Important: alt bei <img> ist immer erforderlich · Strings richtig trennen/verbinden · Kiddie-Code hat keine Chance

          Kommentar


          • #6
            Original geschrieben von penizillin
            (und nur minimal performanter).
            falsch.
            hopka.net!

            Kommentar


            • #7
              Original geschrieben von Hopka
              falsch.
              richtig
              weil PHP in " nach Variabeln sucht und in ' nicht

              Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

              bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
              Wie man Fragen richtig stellt

              Kommentar


              • #8
                Original geschrieben von Hopka
                falsch.
                warum?

                http://www.blueshoes.org/phpBench.php

                Kommentar


                • #9
                  sag mal habt Ihr am WE alle nichts zu tun

                  egal ob " oder ' der Unterschied ist kaum merkbar. Wenn Ihr ' verwendet, aber einen Sch**ßalgorithmus im Programm habt dann nützt es Euch herzlich wenig. Also verlege mal das Augenmerk auf wichtigeren Dingen als auf " oder ' bei String

                  Kommentar


                  • #10
                    Original geschrieben von penizillin
                    warum?

                    http://www.blueshoes.org/phpBench.php

                    http://hopka.net/string.php
                    http://hopka.net/string.php5

                    Wenn keine Variablen drin vorkommen ist mal die Methode mit ' schneller und mal die mit ". Meistens sogar die mit ".

                    Original geschrieben von ghostgambler
                    weil PHP in " nach Variabeln sucht und in ' nicht
                    Nein, PHP sucht nach gar nichts. Erst läuft ein so genannter Tokenizer drüber, der nach Tokens sucht (das sind Schlüsselwörter wie if oder else, aber auch alles andere, was zur Syntax gehört wie $, " und '). Wenn jetzt innerhalb der " kein Token für eine neue Variable ($) vorkommt, dann läuft er dort genau so schnell drüber wie über den String mit '. Das passiert außerdem noch bevor der Code ausgeführt wird und die Funktionen zur Zeitmessung aktiv werden.


                    Und zu asp2php möchte ich noch ergänzen, dass diese so genannten Microbenchmarks (wie in dem Link von penizillin zu finden) nicht sehr aussagekräftig sind. Dort wird ja nur die Ausführungszeit von einzelnen Codezeilen untersucht, und andere wichtige Dinge werden völlig außen vor gelassen wie z.B. der Speicherverbrauch oder die "Compile-Zeit" (bei PHP wird ja jedes Script beim Aufruf normalerweise neu compiliert und ausgeführt). Wenn man wirklich herausfinden will, wo man seine Scripte optimieren kann, dann hilft einem ein Tool wie xdebug sehr viel weiter, weil das auflisten kann, welche Funktionen wie oft aufgerufen werden, und wie lange sie durchlaufen.
                    hopka.net!

                    Kommentar


                    • #11
                      Wenn keine Variablen drin vorkommen [...]
                      ich meine, es geht um das gegenteil. und deinen eigenen benchmarks zufolge macht der z.t. fast das doppelte an zeit.
                      String in ' mit 2 über . $var . eingefügten Variablen: 0.022278 sec
                      String in " mit 2 enthaltenen Variablen: 0.045635 sec
                      Und zu asp2php möchte ich noch ergänzen [...]
                      völlig einverstanden.

                      Kommentar


                      • #12
                        dann will ich auch mal, ihr wolltet es ja nicht anders.

                        http://benchmark.nophia.de/benchmark...tml#auswertung
                        http://benchmark.nophia.de/benchmark...tml#auswertung
                        Die Zeit hat ihre Kinder längst gefressen

                        Kommentar


                        • #13
                          Abgesehen von der Performance gehört das Trennen von Strings und Variablen zum sauberen Programmieren, deshalb sollte man sich das von Anfang an angewöhnen, weil es unter anderem erheblich das Lesen und Analysieren von Quellcodes erleichtert.

                          Und wenn ich dann lese, "ich kann erst seit 2 wochen/3 tage/5 stunden php" und dann les ich
                          PHP-Code:
                          echo "$name"
                          dann weiß ich automatisch, dass beim lernen etwas falsch gelaufen ist.
                          Important: alt bei <img> ist immer erforderlich · Strings richtig trennen/verbinden · Kiddie-Code hat keine Chance

                          Kommentar


                          • #14
                            Ok, hab nun den ganzen thread gelesen, aber irgendwie verstehe ich trotzdfem nicht richtig, warum '' besser als "" sind. Ich dachte immer (und so stands glaub ich auch in meinen büchern), dass das völlig egal ist (zumindest bei Standart strings etc.
                            Klar ist mir, dass sowas wie
                            '$var'
                            und "$var"
                            und sowas wie
                            '\n'
                            und
                            "\n"
                            ein Unterschied macht, aber bei ganz normalen Stringzuweißungen und so versteh ich's jetzt net ganz! Soll ich nun immer bei Strings und bei Indices eines Arrays statt "" '' nutzen oder wie?

                            Kommentar


                            • #15
                              Original geschrieben von firstlord18
                              Soll ich nun immer bei Strings und bei Indices eines Arrays statt "" '' nutzen oder wie?
                              Du kennst den Spruch mit dem Dachdecker?

                              P.S. Es heißt "Zuweisung"
                              Ich denke, also bin ich. - Einige sind trotzdem...

                              Kommentar

                              Lädt...
                              X