⊗ppPmCdBNM 100 of 447 menu

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; ?>
itkktrnlcs