Giải thích tốt nhất mà tôi có thể nghĩ là PHP coi đó là cấu trúc lặp để nó phù hợp với mô hình của một cái gì đó sử dụng continue
và break
. Tài liệu switch
không làm sáng tỏ nhiều hơn về nó ngoài
Lưu ý rằng không giống như một số ngôn ngữ khác, tuyên bố tiếp tục áp dụng để chuyển đổi và hoạt động tương tự như ngắt. Nếu bạn có một chuyển đổi bên trong một vòng lặp và muốn tiếp tục lặp lại tiếp theo của vòng lặp bên ngoài, hãy sử dụng tiếp tục 2.
Vì vậy, có lẽ vì, như vòng lặp, nó dừng việc thực hiện phần còn lại của mã trong cấu trúc của nó.
Tuy nhiên, khi bạn sử dụng một số cấp, hai cư xử khá khác nhau:
continue
mà không có một mức
<?php
for($i=0;$i<5;$i++) {
switch($i) {
case 2:
continue;
default:
echo $i, "\n";
}
echo "Finished with {$i}\n";
}
//0
//Finished with 0
//1
//Finished with 1
//Finished with 2
//3
//Finished with 3
//4
//Finished with 4
continue
với một mức
<?php
for($i=0;$i<5;$i++) {
switch($i) {
case 2:
continue 2;
default:
echo $i, "\n";
}
echo "Finished with {$i}\n";
}
//0
//Finished with 0
//1
//Finished with 1
//3
//Finished with 3
//4
//Finished with 4
break
mà không có một mức
<?php
for($i=0;$i<5;$i++) {
switch($i) {
case 2:
break;
default:
echo $i, "\n";
}
echo "Finished with {$i}\n";
}
//0
//Finished with 0
//1
//Finished with 1
//Finished with 2
//3
//Finished with 3
//4
//Finished with 4
break
với một mức
<?php
for($i=0;$i<5;$i++) {
switch($i) {
case 2:
break 2;
default:
echo $i, "\n";
}
echo "Finished with {$i}\n";
}
//0
//Finished with 0
//1
//Finished with 1
Bạn nên tránh sử dụng từ "lý do" và "thiết kế" khi nói về 'php';) –
bạn có thể sử dụng 'tiếp tục 2' =) – cweinberger
Tôi sẽ đoán rằng việc xử lý' chuyển đổi' như một vòng lặp cấu trúc cung cấp một số tính nhất quán có lập trình về cách 'break' và' continue' hoạt động cho ** tất cả các cấu trúc vòng lặp **. – zzzzBov