PHP und Simikolon

  • Hallo,
    kann man mir jemand sagen, woher man weiss, wann man bei PHP Simikolons setzen muss und wann nicht?
    Hatte zuerst folgenden Code, welchen ich hier von dem PHP Tutorial nachprogrammiert hatte:

    PHP
    <?php
    if($alter>18)
        { echo "Volljährig!"};
    ?>

    Der war aber falsch. Es muss hinter dem echo ein Simikolon und nicht hinter das if. Ja aber warum nicht hinter das if, bzw die } Klammer?
    Das macht doch keinen Sinn? Mal kommt eins hin und mal nicht?
    Bitte um hilfe!

  • also nen semikolon dient als zeilenabschluss, ebenso die geschweifte klammer vom if-block

    so wie du des da hast schliesste sozusagen zweimal ne zeile und da wo man die zeile schliessen sollte haste nichts
    ums mal mit deinem code etwas ander zu verdeutlichen:

    PHP
    <?php 
    if($alter>18){ 
    echo "Volljährig!";
    }
    ?>

    in zeile 1 steht die if-bedingung
    in zeile 2 steht was gemacht werden soll, wenn die bedingung true ist, hier wird die zeile mit einem semikolon abgeschlossen!
    in zeile 3 wird der body der if-anweisung geschlossen und damit auch die zeile, es wird kein semikolon benötigt.

    für die zukunft kannste dir merken, dass immer da wo man die zeile eigentlich beendet ein semikolon kommt und wenn du ne geschweifte klammer hast brauchste nix beenden.

  • Semikolon hat mit der Zeile nichts zu tun. Es ist lediglich "der Punkt des Satzes" - also das Ende eines Befehls, wie viele Zeilen dieser einnimmt ist unerheblich.

    Z.B.:

    PHP
    <?php
    echo "bla"
    
    
    
    
    ;
    ?>

    Funktioniert durchaus ohne Probleme. Ist allerdings nicht wirklich sinnvoll in diesem Fall.


    Man kann auch "einzeilige" Bedingungen schreiben

    PHP
    if($alter > 18) echo "Volljährig";

    Dabei kann es auch so aussehen:

    PHP
    if($alter >= 18) 
        echo "Volljährig";

    Ohne die geschweiften Klammern ist es aber wie gesagt, nur 1 einzelner Befehl. Diese Dienen dazu einen Code zuzuordnen (wie hier in einer Bedingung oder z.B. in einer Funktion).

    /P.S.: Was vielleicht noch interessieren könnte.
    Man kann bei den Bedingungen auch ganz normal folgebedingungen stellen wie else oder elseif, was die Übersicht fördert wenn man mit den Bedingungen nur eine einzelne Variable bestimmen möchte, hier ein Beispiel mit dem Alter

    PHP
    if($alter > 18) $alter = "Älter als 18";
    elseif($alter == 18) $alter = "Genau 18, Glück gehabt";
    else $alter = "Unter 18, HA HA ! :D";

    oder mit Klammern:

    Ich find die erste Version zumindest Übersichtlicher, so sieht man sehr schnell worum es geht *g*. Ist aber Geschmackssache, ich denke viele würden es so bevorzugen:

    PHP
    if($alter > 18) 
        $alter = "Älter als 18";
    elseif($alter == 18) 
        $alter = "Genau 18, Glück gehabt";
    else 
        $alter = "Unter 18, HA HA ! :D";

    So sieht man noch eindeutig (und auf den ersten Blick), dass es sich immer um die selbe Variable handelt, verbraucht aber mehr Platz und deshalb Geschmackssache.
    Ja mir war langweilig.

    11 Mal editiert, zuletzt von Grevas (21. Januar 2010 um 01:22)