Noobis.de - Wir helfen weiter !


Banner Picture
Die Switch Anweisung PDF Drucken E-Mail
Benutzerbewertung: / 1
SchwachPerfekt 
Tutorial Übersicht - Developer Tutorials
Samstag, 20. September 2008 um 09:59
Beitragsseiten
Die Switch Anweisung
2. Der Break Befehl
3. Default Anweisung
Alle Seiten

Die PHP Switch Anweisung. Oftmals ist es vorteilhafter, eine Switch Anweisung zu formulieren, als mehrere geschachtelte IF-Blöcke.

 



1. Die Switchabfrage

  TOP

Die switch-Abfrage ist eine Kontrollstruktur wie die If-Abfrage. Sie führt nur bestimmte Programmteile aus, wenn bestimmte Bedingungen erfüllt sind. Doch eine switch-Abfrage macht nur beim Vergleichen von Ausdrücken und Variablen Sinn. Wenn der Ausdruck oder die Variable den Wert xy hat, dann wird der Teil abc ausgeführt, wenn der Wert ghj ist, wird ein anderen Teil ausgeführt. Mit If-Abfragen würde das so aussehen.

<?php
    $name 
3;
    if (
== $name) {
        echo 
"Der Wert der Variable ist 0";
    }
    if (
== $name) {
        echo 
"Der Wert der Variable ist 1";
    }
    if (
"hi" == $name) {
        echo 
"Der Wert der Variable ist hi";
    }
    if (
== $name) {
        echo 
"Der Wert der Variable ist 3";
    }
    
// ....
?>

Das hier fast immer die gleiche Anweisung ausgeführt wird ist reiner Zufall. Das Beispiel könnte auch so aussehen.

<?php
    $action 
"löschen"// aus einem Formular

    
if ("löschen" == $action) {
        
daten_aus_Datenbank_loeschen();
        echo 
"Die Daten wurden gelöscht";
    }
    if (
"bearbeiten" == $action) {
        
daten_speichern();
        echo 
"Die Daten wurden gespeichert";
    }
    if (
"hinzufügen" == $action) {
        
neue_daten_hinzufuegen();
        echo 
"Die Daten wurden hinzugefügt";
    }
?>

Dieses Beispiel kann man z.B. nutzen um die Member für seinen Clan hinzuzufügen, bearbeiten oder zu löschen. Die Funktionen daten_aus_Datenbank_loeschen() gibt es natürlich nicht. An dieser Stelle kommen dann die entsprechenden Funktionen um dann wirklich die Daten zu löschen.

Eine Switch-Abfrage ist etwas anders aufgebaut als mehrere If-Abfragen, hat aber auch Vorteile gegenüber If-Abfragen. Eine Switch-Abfrage ist wie folgt aufgebaut.

 

<?php
    
switch (variable) {
        ...
    }
?>

 

 

Da wo in diesem Beispiel variable steht, kommt dann die Variable rein die man überprüfen möchte. In den geschweiften Klammern kommen dann die case wert: Zeilen. Der PHP-Interpreter durchläuft dann jedes case und springt dann dort hin wo der Inhalt der Variable gleich dem Wert hinter case ist und arbeitet dann dort stehende Codes ab.

 

<?php
    $name 
5;              //
                            //
    
switch ($name) {        // Hier sieht man das die Variable $name überprüft werden soll
    
case 0:                 //   Nein  X
        // PHP-Code         //         |
    
case "bla":             //   Nein  |
        // PHP-Code         //         |
    
case "blo":             //   Nein  |
        // PHP-Code         //         |
    
case -6:                //   Nein  |
        // PHP-Code         //         |
    
case 5:                 //   Ja    `-->>--.  Hier ist eine Übereinstimmung
        // PHP-Code         //                x    }
    
case 1337:              //   Nein         x    } \
        // PHP-Code         //                x    }  \
    
case 6.2435:            //   Nein         x    } --  wird ausgeführt
        // PHP-Code         //                x    }  /
    
case "er fg ":          //   Nein         x    } /
        // PHP-Code         //                x    }
    
}                       //         ,--<<--'  ende von switch
                            //         |
    
echo "Weiter gehts";    //         x
    // PHP-Code             //         x
?>

Hier wird die Variable $name auf ihren Wert überprüft. PHP guckt sich dabei jedes case an, ob der Wert, der hinter case steht (kann ein beliebiger Ausdruck sein, egal ob int, float oder string), mit dem Wert in der Variable. Sobald PHP eine Übereinstimmung gefunden hat, arbeitet PHP all die Befehle ab, die zwischen diesem case (hier case 5:) und der geschweiften Klammer zu } von der switch-Abfrage stehen. Wenn also der Wert der Variable bei dieser switch-Abfrage den Wert 6.2435 hat, dann werden nur die letzen beiden Code-Segmente ausgeführt. Wenn die Variable den Wert 0 hat, dann werden alle PHP-Segmente ausgeführt. Und wenn die Variable einen Wert hat der nicht hinter einem case steht, also z.B. 3.1415, dann wird gar kein PHP-Code ausgeführt, denn es wurde ja auch keine Übereinstimmung gefunden. Wenn er eine Übereinstimmung gefunden hat, beachtet er dann kommende cases nicht mehr.



Aktualisiert ( Samstag, 20. September 2008 um 15:38 )
 

Comments

B
i
u
Quote
Code
List
List=
[*]
URL
Name *
Email (For verification & Replies)
URL
Code   
ChronoComments by Joomla Professional Solutions
Submit Comment
Working....
Finished
Failed