Ik was deze statement voorbeeld aan het bestuderen maar ik mis de operators na de case?
<?php
$x = 1;
switch($x)
{
case 0 :
echo '$x is gelijk aan 0';
break;
case 1 :
echo '$x is gelijk aan 1';
break;
case 2 :
echo '$x is gelijk aan 2';
break;
default :
echo '$x voldoet niet aan een van de genoemde voorwaarden';
}
?>
Ik was deze statement voorbeeld aan het bestuderen maar ik mis de operators na de case?
Zou je als je een post maakt / topic opent voor dat je schrijft willen bedenken wat je wilt zeggen.
Jou berichten zijn cryptisch. Wij weten jou probleem niet. Wij kunnen niet zien wat jij wilt.
Zie het alsof je het tegen een onbekende hebt, dat heb je immers ook.
Het stukje code in mijn eerste post gaat over Switch statements.
Je kan het vinden op deze pagina: phptuts statements
De switch statement is een vervanger voor een hele reeks elsif statements.
Het is eerste voorbeeld wat er op deze website te zien is.
Daar valt me op dat bij het eerste voorbeeld geen Operators per case wordt geschreven. En dat ziet er zo uit:
case 0 :
echo '$x is gelijk aan 0';
break;
Maar bij het tweede voorbeeld wel. En dat ziet er zo uit voor een case:
case $x > 10 :
echo '$x is groter dan 10';
break;
Misschien kijk ik er overheen?
Maar zonder operator gaat deze code niet werken dacht ik, of wel soms?
Hoe zit dat? Is dat expres zo gedaan voor de tutorial of is dat echt een fout?
Ben ik zo duidelijker misschien?
?
Onbekende gebruiker
08-01-2010 21:09
Zo ben je inderdaad duidelijk.
Heb je die code getest?
Als je dat gedaan hebt dan heb je gemerkt dat '$x is gelijk aan 1' wordt getoond.
Een [php]switch[/php] kijkt normaal gesproken (dus als je niet anders opgeeft) of de case waarde gelijk is aan de waarde van de switch.
Een operator beïnvloed dus de standaard werking.
Het gaat er mij om dat ik het begrijp en kan doorgronden met een begrip die ik hier probeer op te schrijven. Maar dat is nog niet zo eenvoudig. Zonder forum
zou er helemaal geen ontwikkeling in mijn phpstudie zitten. Dus ik ben dit forum echt heel dankbaar.
Ik vind het moeilijk om het in een keer goed uit te leggen. Dus dat zal wel nog vaker voorkomen. Nu denk ik:' Ik krijg het niet uitgelegd. Daardoor moet ik
verder kijken dan mijn 'denkbereik'.
Om het nog duidelijker uit te leggen, ik doel op het eerste voorbeeld in mijn eerste post, de regel die begint met het woord "case" . Daar achter staat een getal. Is dat het getal van het casenummer. Of is dat een cijfer voor de wiskundige vergelijking in php?
Dit bedoelde ik dus helemaal niet: en heb ik ook niet geschreven.
Want op de website zijn dat twee van elkaar gescheiden voorbeelden.
Dit is dus fout begrepen om het zo te schrijven:
switch($x)
{
case 0 :
echo '$x is gelijk aan 0';
break;
case $x > 10 :
echo '$x is groter dan 10';
break;
}
Sorrie, daar kan jij ook niks aan doen dat je dingen door me kaar haalt.
Met het eerste en het tweede voorbeeld. Bedoel ik de phpcode die een voorbeeld zijn op deze website.
Het eerste voorbeeld van de phpcode staat in mijn eerste post.
Dit voorbeeld begrijp ik niet om dat er een getal in het blauw achter het woord "case" staat, en ik begrijp niet waar voor dat getal is bedoelt.
Het tweede voorbeeld phpcode staat op die website: phptuts.nl/view/39/4/
onder de woorden "Ingewikkeldere statements zijn echter ook mogelijk in een switch:".
Dit voorbeeld snap ik wel omdat daar duidelijk achter het woord "case" een operator is geschreven. (een wiskundige vergelijking)
Dus mijn vraag is ; op welke manier moet ik het cijfer achter het woord "case"
begrijpen zoals in het eerste voorbeeld waar in het blauw alleen maar een cijfer staat en geen 'vergelijking met een operator'?
Het eerste voorbeeld is geheel correct.
<?php
$x = 1;
switch($x)
{
case 0 :
echo '$x is gelijk aan 0';
break;
case 1 :
echo '$x is gelijk aan 1';
break;
case 2 :
echo '$x is gelijk aan 2';
break;
default :
echo '$x voldoet niet aan een van de genoemde voorwaarden';
}
?>
Dit zou je ook met if()-jes kunnen schrijven maar een switch() is overzichtelijker. Zo ziet dezelfde code eruit zonder switch().
<?php
$x = 1;
if($x == 0)
{
echo '$x is gelijk aan 0';
}
elseif($x == 1)
{
echo '$x is gelijk aan 1';
}
elseif($x == 2)
{
echo '$x is gelijk aan 2';
}
else
{
echo '$x voldoet niet aan een van de genoemde voorwaarden';
}
?>
Dus er wordt steeds gekeken of de waarde die in de switch(...) staat gelijk is aan de waarde die achter 'case' staat. In dit geval wordt dus gekeken of $x (in dit geval 1) gelijk is (==) aan de waarde achter 'case' (resp. 0, 1, 2). De 'default' wordt gebruikt als er geen enkele waarde overeen komt. Dat is de standaard 'else' bij een if().
Het tweede voorbeeld is niet correct.
<?php
$x = 10;
switch($x)
{
case $x > 10 :
echo '$x is groter dan 10';
break;
case $x == 10 :
echo '$x is gelijk aan 10';
break;
case $x < 10 :
echo '$x is kleiner dan 10';
break;
default :
echo '$x voldoet niet aan een van de genoemde voorwaarden';
}
?>
Het werkt echter meestal wel. Maar bij $x=0 gaat het gigantisch fout. Hier zou switch($x) vervangen moeten worden door switch(true) dan is het wel correct.
Je schrijft:
Dus er wordt steeds gekeken of de waarde die in de switch(...) staat gelijk is aan de waarde die achter 'case' staat.
De waarde die achter de 'case' staat is blauw gekleurd.
Als het alleen een cijfer betreft zoals 'n '0' of '1' of '2' .
Dan was dat voor mij een verwarring.
Want case 0 had voor mij ook case A kunnen zijn. Ik begreep dat het
een naam zou zijn van de case in plaats van een waarde voor de vergelijking.
Ik wis niet dat die blauwe cijfer '0' of '1' of '2' achter 'case de vergelijking treft.