[PHP] Structurele denkfout bij Switch?

Pagina: 1
Acties:
  • 23 views sinds 30-01-2008

  • Kvn
  • Registratie: Maart 2001
  • Laatst online: 11-02 09:05
Ik zit hier nu te genieten van een geweldige php les op school, en ineens lopen we tegen een heel vreemd probleem aan met switch..

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php

$Getal = 0;

switch ($Getal) {
 case ($Getal == 0):
     echo "$Getal is een 0";
     break;
 case ($Getal < 0):
     echo "$Getal is kleiner dan 0";
     break;
 case ($Getal > 0):
     echo "$Getal is groter dan 0";
     break;
}

?>


Nu, als $Getal 0 is, zou dit "0 is een 0" op moeten leveren, right?
Toch print hij telkens "$Getal is kleiner dan 0";

  • André
  • Registratie: Maart 2002
  • Laatst online: 11-02 14:19

André

Analytics dude

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php

$Getal = 0;

switch (true) {
  case ($Getal == 0):
    echo "$Getal is een 0";
  break;
  case ($Getal < 0):
    echo "$Getal is kleiner dan 0";
  break;
  case ($Getal > 0):
    echo "$Getal is groter dan 0";
  break;
}

?>

Zoiets ;)

Wat jij doet bij de eerste case is dit:
PHP:
1
2
if ($Getal == ($Getal == 0)) 
    echo "$Getal is een 0";


En wat ik doe:
PHP:
1
2
if (true == ($Getal == 0)) 
    echo "$Getal is een 0";

[ Voor 31% gewijzigd door André op 14-09-2006 14:07 ]


  • Kvn
  • Registratie: Maart 2001
  • Laatst online: 11-02 09:05
Ik dacht dat je altijd moest switchen op een variabele.. :) Thanks anyways..

  • SilencerNL
  • Registratie: Juli 2002
  • Laatst online: 15:50

SilencerNL

No remorse

nvm }:O

[ Voor 98% gewijzigd door SilencerNL op 14-09-2006 14:07 ]

Don't dream your life, live your dreams!


  • André
  • Registratie: Maart 2002
  • Laatst online: 11-02 14:19

André

Analytics dude

En naar /14 :)

  • Kvn
  • Registratie: Maart 2001
  • Laatst online: 11-02 09:05
Bedankt voor de uitleg dan :) Helemaal duidelijk!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 22-01 23:51

NMe

Quia Ego Sic Dico.

Een switch is hier ook helemaal geen logische oplossing. Bij dergelijke ranges is een if/else if/else oplossing veel helderder en leesbaarder. Dit nog naast het feit dat dit alles gewoon basiskennis is van hoe een switch statement eigenlijk werkt, wat prima gedocumenteerd staat op php.net.

Volgende keer even wat beter lezen dus. :)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.

Pagina: 1

Dit topic is gesloten.