statements met switch en cases

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Evarie Linux

Evarie Linux

08/01/2010 17:22:00
Quote Anchor link
Ik was deze statement voorbeeld aan het bestuderen maar ik mis de operators na de case?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?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';
}
        
?>
Gewijzigd op 01/01/1970 01:00:00 door Evarie Linux
 
PHP hulp

PHP hulp

26/04/2024 07:33:54
 
- SanThe -

- SanThe -

08/01/2010 17:32:00
Quote Anchor link
Wat is het probleem?
Gewijzigd op 01/01/1970 01:00:00 door - SanThe -
 

08/01/2010 19:51:00
Quote Anchor link
Evarie schreef op 08.01.2010 17:22:
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.
 
Evarie Linux

Evarie Linux

08/01/2010 20:59:00
Quote Anchor link
Oke ik ga het proberen als beginner.

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?
Gewijzigd op 01/01/1970 01:00:00 door Evarie Linux
 

08/01/2010 21:09:00
Quote Anchor link
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 switch 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.
 
- SanThe -

- SanThe -

08/01/2010 21:21:00
Quote Anchor link
Evarie schreef op 08.01.2010 20:59:
switch($x)
{
case 0 :
echo '$x is gelijk aan 0';
break;
case $x > 10 :
echo '$x is groter dan 10';
break;
}

De eerste case is correct, de tweede niet.

Switch($x) wil zeggen dat je de waarde van $x gaat vergelijken met wat er achter case staat.

In het geval van de tweede case had er eerder switch(true) moeten staan.
 
Evarie Linux

Evarie Linux

08/01/2010 21:22:00
Quote Anchor link
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?
 
- SanThe -

- SanThe -

08/01/2010 21:25:00
Quote Anchor link
Is mijn korte uitleg duidelijk genoeg?
 
Evarie Linux

Evarie Linux

08/01/2010 22:06:00
Quote Anchor link
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.

Kijk eens op deze website: http://www.phptuts.nl/view/39/4/
onder de woorden "Switch statement".

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'?
Gewijzigd op 01/01/1970 01:00:00 door Evarie Linux
 
- SanThe -

- SanThe -

08/01/2010 22:26:00
Quote Anchor link
Het eerste voorbeeld is geheel correct.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?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().
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?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.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?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.
Gewijzigd op 01/01/1970 01:00:00 door - SanThe -
 
Evarie Linux

Evarie Linux

08/01/2010 22:54:00
Quote Anchor link
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.

Snap je nu waar het mij omgaat?
Gewijzigd op 01/01/1970 01:00:00 door Evarie Linux
 
- SanThe -

- SanThe -

08/01/2010 23:00:00
Quote Anchor link
Ja, het feit dat er 0, 1 en 2 staat kan inderdaad verwarrend zijn.
Hier nog een keer maar dan met een tekst en twee totaal verschillende getallen.
Ik hoop dat het dan duidelijker is.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
$x
= 5;

switch($x)
{
    case
'hallo' :
        echo '$x bevat de tekst "hallo"';
        break;
    case
23 :
        echo '$x is gelijk aan 23';
        break;
    case
5 :
        echo '$x is gelijk aan 5';
        break;
    default :

        echo '$x voldoet niet aan een van de genoemde voorwaarden';
}

?>
 
Evarie Linux

Evarie Linux

08/01/2010 23:50:00
Quote Anchor link
Bedankt, je hebt je best gedaan !

Nu snap ik het door en door, en kan ik verder naar loops.
Maar loops vind ik geen makkelijke.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.