Anmelden

Archiv verlassen und diese Seite im Standarddesign anzeigen : [PhP] Switches und Cases?



raian
06.04.2005, 12:17
Hi!

Ich verstehe diese Switches und Cases net. Wie man einen macht, okay, das weiß ich, aber wie mach ich es das ich zwei habe, und wie aktiviere/deaktiviere ich Switches?

Switches sind ja eigentlich Variablen oder? Ich weiß das net...HELP!

Danke im Voraus...

dadie
06.04.2005, 12:23
Ein Switch ist ne abfrage zu einer Variable

so siht einer z.B. in PHP aus

switch ($id) {
case news:
echo "NEWS" ;
break;
default:
echo "ID ist alles nur nett News" ;
}

Case heisst sozusage if ==
und break Ende .

Ein siwtch erleichtert das ewige elseif , elseif usw. dann wird der code übersichtlicher.

raian
06.04.2005, 13:02
Das heißt das könnte ich machen:

switch ($id) {
case news:
include ('news.php') ;
break;
default:
echo "ID ist alles nur nett News" ;
}
switch ($ahohhh){
case teletubbies:
include ('teletubbies.php');
break;
defaukt:
echo 'Momentan ist die Startseite angesporchen!';
break;
}


Und dann auf einer andren Seite

<?php
//blabla par befehle usw
$ahoh = true;
$id = false;
//blabla ein paar befehle usw
?>

???

Geht das??

Manni
06.04.2005, 13:09
Nein, ein wenig anders.
Du machst es so:

switch($variable) {
case "News":
include("news.php");
break;
case "Forum":
include("Forum/index.php");
break;
case "Banane":
include("banane.php");
break;
default:
die("Unbekannte Variablen Wert");
break;
}

Und in der anderen Datei (oder sonstwo):

$variable = "News" // News werden eingebunden
$variable = "Banane" // Die Bananendatei wird geladen
$variable = "New" // Es gibt ne Fehlermeldung (default)

Hoffe du verstehst meine Erklärungsversuche...

dadie
06.04.2005, 13:16
Nein, ein wenig anders.
Du machst es so:

switch($variable) {
case "News":
include("news.php");
break;
case "Forum":
include("Forum/index.php");
break;
case "Banane":
include("banane.php");
break;
default:
die("Unbekannte Variablen Wert");
break;
}

Und in der anderen Datei (oder sonstwo):

$variable = "News" // News werden eingebunden
$variable = "Banane" // Die Bananendatei wird geladen
$variable = "New" // Es gibt ne Fehlermeldung (default)

Hoffe du verstehst meine Erklärungsversuche...

Wollte fast das selbe sagen ^^

Achja du kannst die Variable aber auch über get geben ^^ währe etwas sinvoller für ne HP ;)

also <a href="blablabla.php?variable=Banane" title="Zwei Banas in pyjamas" >Zwei Banas in pyjamas</a>

MagicMagor
06.04.2005, 14:03
Hm.. anstatt hier "nur" Beispielcode zu posten, könnte man auch versuchen das anscheinend vorliegende Verständnissproblem zu beseitigen.. =)

@Threadersteller
"Switch" hat in einer Sprache, wie PHP, eine vollkommen andere Bedeutung als im Maker (wo ich mal annehme, du herkommst). Switch ist keine Variable, sondern eine Anweisung, genauer gesagt ein Anweisungskonstrukt, ähnlich wie "If".
Ein Switch-Konstrukt besteht aus dem Switch-Statement, wo eine Variable angegeben wird, deren Inhalt überprüft werden soll. Nach diesem Switch-Statement, kommen die Case-Anweisungen. Hier gibt es einen Anweisungsblock, eingeleitet über einen "Case". Zusätzlich zu einer beliebigen Anzahl an Case-Anweisungen gibt es noch den optionalen default-Case..
Der Programmablauf geht dabei folgerndermasen vor. Der Wert, der angegeben Variable wird gelesen und mit jedem Wert verglichen, für den es einen Case-Block gibt. Wird ein solcher Case-Block gefunden, springt der Programmablauf sofort zu diesem Block.
Wird kein entsprechender Case-Block gefunden, wird zum default-Block gesprungen, falls dieser ebenso fehlt, springt der Programmablauf sofort zum Ende des Switch-Konstruktes. Selbiges passiert auch durch die break-Anweisung.

Diese Switchkonstrukte gibt es in nahezu jeder Programmier/script-Sprache, in manchen heißen sie aber "Select" statt "Switch". Mit dem makertypischen Switch, haben sie gar nichts zu tun. Der Ausdruck "Switch" im Maker bezeichnet das, was im Programmierjargon eine Boolsche Variable ist.

dadie
06.04.2005, 14:06
Hm.. anstatt hier "nur" Beispielcode zu posten, könnte man auch versuchen das anscheinend vorliegende Verständnissproblem zu beseitigen.. =)


Und was ist dann das hier ? http://www.multimediaxis.de/images/smilies/old/s_009.gif


Ein Switch ist ne abfrage zu einer Variable

so siht einer z.B. in PHP aus

switch ($id) {
case news:
echo "NEWS" ;
break;
default:
echo "ID ist alles nur nett News" ;
}

Case heisst sozusage if ==
und break Ende .

Ein siwtch erleichtert das ewige elseif , elseif usw. dann wird der code übersichtlicher.

Ist zwar nett so ausfürlich aber das wichtigste ist gesagt ;)

Jesus_666
06.04.2005, 14:15
Der Ausdruck "Switch" im Maker bezeichnet das, was im Programmierjargon eine Boolsche Variable ist.
Und dazu gebe ich mal ein paar Details.

Eine Bool'sche Variable (in den meisten Sprachen bekannt als Boolean oder Bool) kennt zwei Zustände: Wahr und falsch. Das entspricht den Einsen und Nulles des Binärsystems: Effektiv ist ein Bool ein Bit.
PHP kennt keine Variablentypen. Das heißt, daß es keinen großen Unterschied zwischen Integer- und Boole'schen Variablen gibt. (Integer kennst du schon vom Maker her - das, was der Maker als Variablen bezeichnet sind Integer.) Wenn du also einen Bool verwenden willst, dann weist du einfach irgendeiner Variable einen der Werte true (wahr) oder false (falsch) zu.
In anderen Sprachen muß man vorher explizit angeben, daß die Variable ein Bool ist; danach kann man der Variable auch nur Bool-Werte zuweisen. PHP ist da flexibel.

Tatsächlich kann man in PHP so ziemlich alles als Bool verwenden. Zahlen, Strings, was auch immer - PHP findet schon eine Möglichkeit, die Variable auf wahr oder falsch zu reduzieren. Mit etwas experimentieren solltest du ein Gefühl dafür kriegen, was als wahr und was als falsch gilt.

raian
06.04.2005, 19:30
Habs verstanden!

Ich kann auch einfach switch ($i == "Hallo")
und dann die cases usw

Habs verstanden, Danke!

Lukas
06.04.2005, 19:38
Ich kann auch einfach switch ($i == "Hallo")
und dann die cases usw
Da ist die Schreibweise mit if imo übersichtlicher, mich würde das verwirren. switch ist mehr dazu gedacht, eine Variable auf viele Werte zu prüfen, an der Stelle kann der Wert aber nur 1 oder 0 sein.

Dingsi
06.04.2005, 20:10
Was mach btw machen kann (auch wenns irgendwie nicht immer sinnvoll ist):
switch(true)
{
case $i=="asdwtf": break;
case $k==5: break;
case $fukyu==true: break;
}