Untuk pertimbangan keadaan berbilang, kami menggunakan suis dan bukannya ifelse untuk menjadikan kod lebih jelas. Daripada manual PHP, saya mendapati bahawa seseorang telah membandingkannya, dan saya juga menjalankan eksperimen dengan kodnya:
$s = time(); for ($i = 0; $i < 1000000000; ++$i) { $x = $i % 10; if ($x == 1) { $y = $x * 1; } elseif ($x == 2) { $y = $x * 2; } elseif ($x == 3) { $y = $x * 3; } elseif ($x == 4) { $y = $x * 4; } elseif ($x == 5) { $y = $x * 5; } elseif ($x == 6) { $y = $x * 6; } elseif ($x == 7) { $y = $x * 7; } elseif ($x == 8) { $y = $x * 8; } elseif ($x == 9) { $y = $x * 9; } else { $y = $x * 10; } } print("if: " . (time() - $s) . "sec\n"); $s = time(); for ($i = 0; $i < 1000000000; ++$i) { $x = $i % 10; switch ($x) { case 1: $y = $x * 1; break; case 2: $y = $x * 2; break; case 3: $y = $x * 3; break; case 4: $y = $x * 4; break; case 5: $y = $x * 5; break; case 6: $y = $x * 6; break; case 7: $y = $x * 7; break; case 8: $y = $x * 8; break; case 9: $y = $x * 9; break; default: $y = $x * 10; } } print("switch: " . (time() - $s) . "sec\n");
Selepas menggelung 1000000000 kali dan menambah operasi pada setiap syarat penghakiman, kami Hasilnya ialah suis itu adalah lebih cekap dan berjalan lebih pantas. Hasilnya pada komputer saya ialah:
// if: 301sec // switch: 255sec
Walaupun suis lebih cekap, ada juga perkara yang perlu diberi perhatian Pertama, nilai hakim hanya boleh nombor, nombor titik terapung atau rentetan. Kedua, setiap penghakiman adalah == penghakiman biasa, iaitu, keputusan penghakiman berikut tidak semestinya sama dengan anda:
$string = "2string"; switch ($string) { case 1: echo "this is 1"; break; case 2: echo "this is 2"; break; case '2string': echo "this is a string"; break; } // this is 2
Ya, ia masih merupakan jenis == perbandingan masalah penukaran paksa ialah apabila membandingkan nilai rentetan dan int, mereka dipaksa kepada jenis int Hasil penukaran paksa "2 rentetan" adalah tepat 2. Oleh itu, apabila menggunakan suis, anda harus memastikan bahawa nilai perbandingan adalah konsisten dengan jenis setiap kes, jika tidak, ralat yang tidak dapat diramalkan mungkin berlaku.
参考代码:https://github.com/zhangyue0503/dev-blog/blob/master/php/201911/source/PHP%E7%9A%84switch%E5%92%8Cifelse%E8%B0%81%E6%9B%B4%E5%BF%AB%EF%BC%9F.php
Pembelajaran yang disyorkan: "Tutorial Video PHP"