การไม่จำเป็นของ break ใน PHP
คำสั่ง break เป็นสิ่งที่ไม่จำเป็นต้องมี
อย่างไรก็ตาม ถ้าไม่มีมัน พฤติกรรมของบล็อก case
จะไม่เป็นไปตามที่คาด ลองดูตัวอย่าง
สมมติว่าเรามีโค้ดดังนี้:
<?php
$num = 1;
switch ($num) {
case 1:
echo 1;
break;
case 2:
echo 2;
break;
case 3:
echo 3;
break;
}
?>
ลองเอา break ทั้งหมดออก และในตัวแปร
$num เริ่มแรกให้ใส่ตัวเลข 3
ตอนนี้ทุกอย่างยังคงทำงานเหมือนเดิม:
<?php
$num = 3; // ให้มีเลข 3 ตรงนี้
switch ($num) {
case 1:
echo 1;
case 2:
echo 2;
case 3:
echo 3;
}
// หลังจากรันโค้ดจะแสดง 3 - ดีหมด
?>
คราวนี้ลองใส่ตัวเลข 2 ลงในตัวแปร $num ในกรณีนี้ตามที่คาด
case 2 จะทำงาน และตามมาด้วย case 3 ซึ่งไม่คาดคิด:
<?php
$num = 2;
switch ($num) {
case 1:
echo 1;
case 2:
echo 2;
case 3:
echo 3;
}
// หลังจากรันโค้ดจะแสดง 2 แล้วก็ 3
?>
แต่ถ้าใส่ตัวเลข 1 ลงในตัวแปร $num แล้ว
โครงสร้าง case ทั้งหมดจะทำงาน:
<?php
$num = 1;
switch ($num) {
case 1:
echo 1;
case 2:
echo 2;
case 3:
echo 3;
}
// หลังจากรันโค้ดจะแสดง 1, 2 และ 3
?>
นั่นคือ เมื่อไม่มี break
หลังจาก case ที่ตั้งใจไว้ทำงานเสร็จแล้ว
case ทั้งหมดด้านล่างมันก็จะทำงานตามไปด้วย บางครั้ง
คุณลักษณะนี้ถูกนำไปใช้ในการแก้ปัญหา
ในตัวอย่างต่อไปนี้ ถ้าตัวแปร $num
มีค่า 1 หรือ 2 แล้ว
ค่า 'a' จะถูกเก็บลงในตัวแปร $res
แต่ถ้าตัวแปร $num มีค่า
3 แล้ว ค่า 'b'
จะถูกเก็บลงในตัวแปร $res:
<?php
$num = 1;
switch ($num) {
case 1:
case 2:
$res = 'a';
break;
case 3:
$res = 'b';
break;
}
echo $res;
?>
ด้านบนฉันเขียนว่า บางครั้งคุณลักษณะนี้ ถูกนำไปใช้ แต่โดยทั่วไปแล้วฉันไม่แนะนำ ให้ใช้มัน เพราะโค้ดจะไม่ชัดเจน มากนัก
การแก้ปัญหาดังกล่าวให้ชัดเจนขึ้นทำได้โดยใช้ if:
<?php
$num = 1;
if ($num == 1 or $num == 2) {
$res = 'a';
}
if ($num == 3) {
$res = 'b';
}
echo $res;
?>