Opsionaliteit van break in PHP
Die opdrag break is opsioneel.
Sonder dit sal die gedrag van die case blokke
egter onverwags wees. Kom ons kyk na 'n voorbeeld.
Laat ons die volgende kode hê:
<?php
$num = 1;
switch ($num) {
case 1:
echo 1;
break;
case 2:
echo 2;
break;
case 3:
echo 3;
break;
}
?>
Kom ons verwyder al die break, en in die veranderlike
$num skryf ons eers die getal 3.
Aanvanklik sal alles werk soos voorheen:
<?php
$num = 3; // laat die getal hier 3 wees
switch ($num) {
case 1:
echo 1;
case 2:
echo 2;
case 3:
echo 3;
}
// Na uitvoering sal die kode 3 uitdruk - alles is goed
?>
Kom ons skryf nou die getal 2 in die veranderlike $num.
In hierdie geval sal case 2, soos verwag, uitgevoer word,
en dan onverwags ook case 3:
<?php
$num = 2;
switch ($num) {
case 1:
echo 1;
case 2:
echo 2;
case 3:
echo 3;
}
// Na uitvoering sal die kode 2, en dan 3 uitdruk
?>
As ons die getal 1 in die veranderlike $num skryf,
dan sal al die case konstruksies uitgevoer word:
<?php
$num = 1;
switch ($num) {
case 1:
echo 1;
case 2:
echo 2;
case 3:
echo 3;
}
// Na uitvoering sal die kode 1, dan 2, en dan 3 uitdruk
?>
Dit blyk dus dat by afwesigheid van break,
na die uitvoering van die bedoelde case,
ook al die case onder dit uitgevoer sal word. Soms
word hierdie eienskap gebruik by die oplos van take.
In die volgende voorbeeld, as die veranderlike $num
die waarde 1 of 2 het, dan
sal die waarde 'a' in die veranderlike $res geskryf word.
As die veranderlike $num eger die waarde
3 het, dan sal die waarde 'b'
in die veranderlike $res geskryf word:
<?php
$num = 1;
switch ($num) {
case 1:
case 2:
$res = 'a';
break;
case 3:
$res = 'b';
break;
}
echo $res;
?>
Hierbo het ek geskryf dat hierdie eienskap soms gebruik word, maar in die algemeen beveel ek nie aan om dit te gebruik nie, aangesien die kode dan nie baie duidelijk nie.
Dit is duideliker om so 'n taak met behulp van if-stellings op te los:
<?php
$num = 1;
if ($num == 1 or $num == 2) {
$res = 'a';
}
if ($num == 3) {
$res = 'b';
}
echo $res;
?>