Switch - Alternative zu IF

Switch - Alternative zu IF| Datum: 14.10.2009 - 17:10 | Author: Fazitas

Hallöchen,

ich möchte euch hier mal die "Switch"-Funktion näher bringen, in manchen Situationen sicherlich einfacher,schöner und sinnvoller als eine IF-ELSE oder ELSEIF anweisung. :)

Fangen wir an:

Der Aufbau einer "switch"-Anweisung:

Code



switch($variable) {
}



Nachdem wir mit "switch" unsere Anweisung gestartet haben folgt die Variable die geprüft werden soll ($variable)
anschließend noch der Hauptteil der von geschweiften Klammern umgeben ist. ( { } )

Nun haben wir schonmal den Aufbau.

Weiter geht es mit dem Inhalt (Hauptteil):

Code



switch($variable) {
case 3:
case "string":
}




Nun haben wir hier 2 "case" Abschnitte.
Diese lassen sich gut mit einer ELSEIF-Anweisung vergleichen,
aber moment, in einer switch-Anweisung können wir NUR einen Vergleichoperator verwenden, nämlich -> [i:9xb5h904]==[/i:9xb5h904]
In unserem Beispiel wäre das also so:
[i:9xb5h904]-> $variable == 3 -> case3:
-> $variable == "string" -> case "string":[/i:9xb5h904]
wenn wir den Quellcode oben als ELSEIF schreiben würden, würde es folgendermaßen aussehen:

Code



if($variabel == 3)
{
}
elseif($variable == "string")
{
}



Also nicht sehr lohnenswert dort IF zu verwenden.

Weiter geht es mit den einzelnen case-Elementen:

Code



$variable = 3;
switch($variable) {
case 1:
echo 'Ich werde nicht aufgerufen';
case 3:
echo 'Ich werde angezeigt.';
case "string":
echo 'Ich leider auch.':
}



In den case-Elementen kann man so ziemlich alles machen (lassen), hier hab ich es auf ein einfaches Echo beschränkt.
Nun haben wir aber ein ungewollten Nebeneffekt (oder auch nicht), in unserem Fall möchten wir das nur ein case einen Text ausgibt.
Dies können wir mit einem [i:9xb5h904]break;[/i:9xb5h904] erreichen:

Code



$variable = 3;
switch($variable) {
case 1:
echo 'Ich werde nicht aufgerufen';
break;
case 3:
echo 'Ich werde angezeigt.';
break;
case "string":
echo 'Ich nun wieder nicht.':
break; //Optional weil eh Ende
}



Der break sogt nun dafür das nach dem Aufruf der switch beendet wird und die nachfolgenden case nicht angezeigt oder ausgefürt werden.


Soooo, nun haben wir es ja fast geschafft :)
Kommen wir zum vorerst letzten Teil in diesem Tutorial:
Dem [i:9xb5h904]default[/i:9xb5h904]:

Code



switch($variable) {
case 1:
echo 'Irgendwas';
break;
case 3:
echo 'etwas anderes';
break;
case 5:
echo 'wieder was anderes':
break;
default:
echo 'Kein passender Parameter.';
}



Der default-Teil kommt immer dann zum einsatz wenn kein passendes case vorhanden ist,
in unserem Beispiel wäre das z.b. die Nummer 4, es ist kein case 4: vorhanden, also wird der default-Teil angezeigt.

[hr:9xb5h904]
So nun sind wir echt am Ende :D
Sollte noch etwas unklar sein oder sollte in euren Augen etwas fehlen, schreibt es einfac hier in den Thread :)

Mit freundlichen Grüßen,
Fazitas :)

Re: Switch - Alternative zu IF| Datum: 14.10.2009 - 20:10 | Author: SirZimt

Nett erklärt. Ist denke ich besser wenn ich switch nehme statt ne if-schleife zur Abfrage der aktuellen seite + ausgabe vom titel :P

Re: Switch - Alternative zu IF| Datum: 14.10.2009 - 20:10 | Author: Anonymous

[quote="SirZimt":1zndrprt]Nett erklärt. Ist denke ich besser wenn ich switch nehme statt ne if-schleife zur Abfrage der aktuellen seite + ausgabe vom titel :P[/quote:1zndrprt]
http://www.if-schleife.de/ ;-)

Re: Switch - Alternative zu IF| Datum: 14.10.2009 - 23:10 | Author: SirZimt

[quote="Balmung":1sh689c1][quote="SirZimt":1sh689c1]Nett erklärt. Ist denke ich besser wenn ich switch nehme statt ne if-schleife zur Abfrage der aktuellen seite + ausgabe vom titel :P[/quote:1sh689c1]
http://www.if-schleife.de/ ;-)[/quote:1sh689c1]

Hehe lol jetzt werde ich auch mal ermaht :P! Danke ^^

Re: Switch - Alternative zu IF| Datum: 15.10.2009 - 15:10 | Author: PCFreund

[quote="Balmung":3cip68li][quote="SirZimt":3cip68li]Nett erklärt. Ist denke ich besser wenn ich switch nehme statt ne if-schleife zur Abfrage der aktuellen seite + ausgabe vom titel :P[/quote:3cip68li]
http://www.if-schleife.de/ ;-)[/quote:3cip68li]
mann jetz verwenden diese vollidioten auch schon eine domain um mit der NUR EINEN satz anzuzeigen ... - sorry das mit vollidioten aber es stimmt ja ...

Re: Switch - Alternative zu IF| Datum: 15.10.2009 - 15:10 | Author: Haruspex

Also ich find die Seite unterhaltsam. Außerdem störts doch keinen, wenn sie es sich leisten können, sollen sies machen ;)

Re: Switch - Alternative zu IF| Datum: 15.10.2009 - 15:10 | Author: PCFreund

jo stimmt ...
ok: <!--Back2Topic-->
ich verwende trotzedem eine ifabfrage ...

Re: Switch - Alternative zu IF| Datum: 15.10.2009 - 16:10 | Author: Anonymous

[quote="PCFreund":1pkx2oak]mann jetz verwenden diese vollidioten auch schon eine domain um mit der NUR EINEN satz anzuzeigen ... - sorry das mit vollidioten aber es stimmt ja ...[/quote:1pkx2oak]
Die richtige Begriffe zu kennen und zu nutzen ist ein wesentlicher Teil in jedem Technischen und Wissenschaftlichem Bereich.
Ein Mathelehrer der Mathe liebt würde dir auch auf die Nase hauen, wenn du falsche Begriffe nutzt, und genau so haut dir ein Programmierer, der Programmieren liebt, auf die Nase, wenn man Fachbegriffe falsch benutzt, bei denen sowas eigentlich fast unmöglich ist, wenn man mal genau überlegt was man da eigentlich sagt und was man meint.

Es ist nun mal eine reine Tatsache dass If-Abfragen, If-Verzweigungen oder If-Anweisungen (alles Passende Begriffe) keine Schleifen sind. Schleifen sind Sprachkonstrukte die eine Tätigkeit mehrmals [i:1pkx2oak]wiederholen[/i:1pkx2oak] sollen, bis oder während eine bestimmte Bedingung erfüllt ist. Und bei If-Abfragen wird [i:1pkx2oak]nichts[/i:1pkx2oak] wiederholt. Da Schleifen und Abfragen elementare und wichtige Bestandteile der Programmierung sind, ist es schon nahezu unverzeihlich wenn man diese, trotz der eindeutig unterschiedlichen Technik, durcheinander bringt.

Auch wenn wir wissen was gemeint ist. Was falsch ist, ist nunmal falsch und das einzige was man da tun kann, ist darauf zu verweisen, dass man einen falschen Begriff benutzt hat, denn es besteht ja immer noch die Möglichkeit, dass derjenige es einfach nicht besser [i:1pkx2oak]wusste[/i:1pkx2oak].

Edit: naja auch egal... sollten vll nicht zu sehr abdriften ^^

mfg Balmung