PHP lekcije - lekcija 8-2 - Switch operator
U prošloj lekciji upoznali smo se sa if operatorom. If operator nam omogućava da proverimo da li je uslov tačan i u zavisnosti od rezultata izvršimo željene radnje.
Zamislimo sada da treba da izvršimo deset provera i u zavisnosti od rezultata izvršimo jednu od deset radnji. Naravno, možemo to zapisati i kroz if:
<?php if($x == 1){ // radnje } if($x == 2){ // radnje } if($x == 3){ // radnje } if($x == 4){ // radnje } if($x == 5){ // radnje } if($x == 6){ // radnje } if($x == 7){ // radnje } if($x == 8){ // radnje } if($x == 9){ // radnje } if($x == 10){ // radnje } ?>
Ovaj način će raditi, ali je bolje zapisivati ovakve provere kroz SWITCH operator.
PHP switch
Switch operator omogućava da proverimo vrednost izraza pod mnogo uslova. Hajde da prepravimo gornji primer korišćenjem switch:
<?php switch ($x){ case 1: // radnje break; case 2: // radnje break; case 3: // radnje break; case 4: // radnje break; case 5: // radnje break; case 6: // radnje break; case 7: // radnje break; case 8: // radnje break; case 9: // radnje break; case 10: // radnje break; default: // radnje ako nijedan drugi uslov nije ispunjen } ?>
Kao što sam rekao, oba primera će raditi isto, samo što sam kod switch dodao default koji se aktivira ako vrednost $x nije između 1 i 10.
Hajde da vidimo od čega se sastoji switch konstrukcija. Prvo ide sam switch operator, iza njega u zagradama je izraz koji proveravamo. U izrazu može biti promenljiva bilo kog tipa - tekstualnog ili numeričkog, npr:
<?php switch ($x){ case 'Hello': break; case 'Bye': break; } ?>
Nakon izraza idu viticaste zagrade. U njima navodimo moguće vrednosti izraza i pripadajuće radnje.
<?php switch ($x){ case 'Hello': // moguća vrednost print $x; // radnje break; // kraj izvršenja switch-a case 2: $x++; break; } ?>
Provera vrednosti piše se kao case, a moguća vrednost se stavlja u navodnike ako je string ili bez njih ako je broj. Nakon vrednosti ide dvotačka.
Zatim pišemo radnje koje treba izvršiti ako je uslov ispunjen. Nakon svake case sekcije treba staviti break; što znači kraj rada switch-a.
Na kraju može ići default koji se izvršava ako nijedan case nije ispunjen ili ako ste zaboravili break; i izvršavanje se nastavi. Iz toga sledi:
1. Ne zaboravite break; nakon svakog case.
2. Break; nije neophodan nakon default, jer je to kraj switch-a.
Ispod je blok šema switch operatora:
Kao objašnjenje, ovde dobijamo ostatak pri deljenju broja $D i koliko je dana prošlo od početka nedelje - koji je danas dan.
<?php // $D broj dana od ponedeljka $x = $D % 7; switch ($x){ case 1: print 'ponedeljak'; break; case 2: print 'utorak'; break; case 3: print 'sreda'; break; case 4: print 'četvrtak'; break; case 5: print 'petak'; break; case 6: print 'subota'; break; case 7: print 'nedelja'; break; } ?>