Kewajipan break dalam PHP

Perintah break adalah tidak wajib. Tanpanya, walau bagaimanapun, tingkah laku blok case akan menjadi tidak dijangka. Mari kita lihat contoh. Katakan kita mempunyai kod seperti berikut:

php<?php
  $num = 1;
  
  switch ($num) {
    case 1:
      echo 1;
    break;
    case 2:
      echo 2;
    break;
    case 3:
      echo 3;
    break;
  }
?>

Mari kita buang semua break di dalamnya, dan dalam pembolehubah $num untuk permulaan, mari kita masukkan nombor 3.

Buat masa ini, semuanya akan berfungsi seperti sebelumnya:

php<?php
  $num = 3; // katakan nombor di sini ialah 3
  
  switch ($num) {
    case 1:
      echo 1;
    case 2:
      echo 2;
    case 3:
      echo 3;
  }
  
  // Selepas dijalankan, kod akan memaparkan 3 - semuanya baik
?>

Sekarang, mari kita masukkan nombor 2 ke dalam pembolehubah $num. Dalam kes ini, kita menjangkakan case 2 akan dilaksanakan, dan kemudian secara tidak dijangka case 3 juga akan dilaksanakan:

php<?php
  $num = 2;
  
  switch ($num) {
    case 1:
      echo 1;
    case 2:
      echo 2;
    case 3:
      echo 3;
  }
  
  // Selepas dijalankan, kod akan memaparkan 2, dan kemudian 3
?>

Jika kita masukkan nombor 1 ke dalam pembolehubah $num, maka kesemua konstruksi case akan dilaksanakan:

php<?php
  $num = 1;
  
  switch ($num) {
    case 1:
      echo 1;
    case 2:
      echo 2;
    case 3:
      echo 3;
  }
  
  // Selepas dijalankan, kod akan memaparkan 1, kemudian 2, dan kemudian 3
?>

Jadi, ternyata bahawa tanpa break, selepas pelaksanaan case yang dimaksudkan, kesemua case di bawahnya juga akan dilaksanakan. Kadang-kadang ciri ini digunakan dalam menyelesaikan masalah.

Dalam contoh berikut, jika pembolehubah $num mempunyai nilai 1 atau 2, maka nilai 'a' akan dimasukkan ke dalam pembolehubah $res. Jika pembolehubah $num mempunyai nilai 3, maka nilai 'b' akan dimasukkan ke dalam pembolehubah $res:

php<?php
  $num = 1;
  
  switch ($num) {
    case 1:
    case 2:
      $res = 'a';
    break;
    case 3:
      $res = 'b';
    break;
  }
  
  echo $res;
?>

Di atas saya tulis, kadang-kadang ciri seperti ini digunakan, tetapi saya, secara umumnya, tidak mengesyorkan menggunakannya, kerana kod menjadi tidak sangat jelas.

Lebih jelas untuk menyelesaikan masalah sedemikian menggunakan if:

php<?php
  $num = 1;
  
  if ($num == 1 or $num == 2) {
    $res = 'a';
  }
  
  if ($num == 3) {
    $res = 'b';
  }
  
  echo $res;
?>