บทนำ
break เป็น Looping Control Keyword ใน PHP เมื่อโปรแกรมเจอ break ภายใน while, do-while, for, foreach หรือ switch จะข้าม Statement ที่เหลือใน Loop/Switch ไปทำงาน Statement ถัดไป
Syntax
while (expr) {
...
if (expr1) break;
...
}
ตัวอย่าง: ออกจาก Loop ด้วยเงื่อนไข
While Loop อ่าน Input จนกว่าจะพิมพ์ "END":
<?php
while (TRUE) {
$var = readline("enter something (END to stop loop): ");
if ($var == "END") break;
echo "You entered $var\n";
}
?>
ผลลัพธ์
enter something (END to stop loop): Hello You entered Hello enter something (END to stop loop): PHP You entered PHP enter something (END to stop loop): END
Break ใน Nested Loops
Break แบบไม่มี Argument ออกจาก Current Loop เท่านั้น:
<?php
for ($i = 1; $i <= 5; $i++) {
echo "Start Of outer loop\n";
for ($j = 1; $j <= 5; $j++) {
if ($j >= 3) break; // ออกจาก Inner Loop เท่านั้น
echo "I: $i J: $j\n";
}
echo "End of inner loop\n";
}
?>
ผลลัพธ์
Start Of outer loop I: 1 J: 1 I: 1 J: 2 End of inner loop Start Of outer loop I: 2 J: 1 I: 2 J: 2 End of inner loop ... (ซ้ำสำหรับ i=3,4,5)
Break กับ Numeric Argument
break N ออกจาก N ระดับของ Nested Structures:
<?php
for ($i = 1; $i <= 5; $i++) {
echo "Start Of outer loop\n";
for ($j = 1; $j <= 5; $j++) {
if ($j > 3) break 2; // ออกจาก Outer Loop ด้วย (Level 2)
echo "I: $i J: $j\n";
}
echo "End of inner loop\n";
}
?>
ผลลัพธ์
I: 1 J: 1 I: 1 J: 2 I: 1 J: 3
Break ใน Switch
ป้องกัน Fall-through เมื่อเจอ Case ที่ต้องการ:
<?php
$x = 25;
$var = (int)readline("enter 1 for sqrt, 2 for square: ");
switch ($var) {
case 1:
echo sqrt($x) . "\n";
break;
case 2:
echo pow($x, 2) . "\n";
break;
}
?>
ผลลัพธ์
enter 1 for sqrt, 2 for square: 2 625 enter 1 for sqrt, 2 for square: 1 5
ข้อควรระวัง
- Break ใช้ได้ใน Loop (for, foreach, while, do-while) และ Switch เท่านั้น
- Break ไม่ทำงานใน If/Else (ต้องใช้ Return หรือ Restructure Logic)
- Break N ต้องเป็น Integer Literal (ไม่ใช่ Variable)
- ใน Switch หากไม่มี Break จะ Fall-through ไป Case ถัดไป