Opsionalitas break dalam PHP
Perintah break adalah opsional.
Tanpanya, bagaimanapun, perilaku blok case
akan tidak terduga. Mari kita lihat contohnya.
Misalkan kita memiliki kode seperti ini:
<?php
$num = 1;
switch ($num) {
case 1:
echo 1;
break;
case 2:
echo 2;
break;
case 3:
echo 3;
break;
}
?>
Mari kita hapus semua break di dalamnya, dan dalam variabel
$num untuk awal kita tulis angka 3.
Untuk sini semuanya akan bekerja seperti biasa:
<?php
$num = 3; // misalkan di sini angka 3
switch ($num) {
case 1:
echo 1;
case 2:
echo 2;
case 3:
echo 3;
}
// Setelah dijalankan kode akan menampilkan 3 - semuanya baik
?>
Sekarang mari kita tulis angka 2 ke dalam variabel $num. Dalam kasus ini, yang diharapkan
case 2 akan dieksekusi, dan kemudian secara tidak terduga
case 3 juga akan dieksekusi:
<?php
$num = 2;
switch ($num) {
case 1:
echo 1;
case 2:
echo 2;
case 3:
echo 3;
}
// Setelah dijalankan kode akan menampilkan 2, lalu 3
?>
Jika kita menulis angka 1 ke dalam variabel $num, maka semua
konstruksi case akan dieksekusi:
<?php
$num = 1;
switch ($num) {
case 1:
echo 1;
case 2:
echo 2;
case 3:
echo 3;
}
// Setelah dijalankan kode akan menampilkan 1, lalu 2, dan kemudian 3
?>
Artinya, ketika tidak ada break,
setelah case yang dimaksud dieksekusi,
semua case di bawahnya juga akan dieksekusi. Terkadang
fitur seperti ini digunakan dalam menyelesaikan masalah.
Dalam contoh berikut, jika variabel $num
memiliki nilai 1 atau 2, maka
nilai 'a' akan ditulis ke dalam variabel $res.
Namun, jika variabel $num memiliki nilai
3, maka nilai 'b' akan ditulis
ke dalam variabel $res:
<?php
$num = 1;
switch ($num) {
case 1:
case 2:
$res = 'a';
break;
case 3:
$res = 'b';
break;
}
echo $res;
?>
Di atas saya menulis bahwa terkadang fitur seperti ini digunakan, tetapi saya, secara umum, tidak merekomendasikan menggunakannya, karena kode menjadi tidak sangat jelas.
Lebih jelas menyelesaikan masalah seperti ini dengan if:
<?php
$num = 1;
if ($num == 1 or $num == 2) {
$res = 'a';
}
if ($num == 3) {
$res = 'b';
}
echo $res;
?>