if
không phải là cấu trúc vòng lặp, do đó bạn không thể "thoát khỏi nó". Tuy nhiên, bạn có thể thoát ra khỏi số foreach
chỉ bằng cách gọi break
. Trong ví dụ của bạn nó có hiệu quả mong muốn:
foreach($equipxml as $equip) {
$current_device = $equip->xpath("name");
if ($current_device[0] == $device) {
// found a match in the file
$nodeid = $equip->id;
// will leave the foreach loop and also the if statement
break;
}
this_command_is_not_executed_after_a_match_is_found();
}
Chỉ cần cho đầy đủ cho những người khác rằng vấp ngã khi câu hỏi này tìm kiếm một câu trả lời ..
break
có một đối số tùy chọn, trong đó xác định có bao nhiêu cấu trúc vòng lặp cần phá vỡ. Ví dụ:
foreach (array('1','2','3') as $a) {
echo "$a ";
foreach (array('3','2','1') as $b) {
echo "$b ";
if ($a == $b) {
break 2; // this will break both foreach loops
}
}
echo ". "; // never reached
}
echo "!";
Kết quả đầu ra:
1 3 2 1!
Nếu - vì một lý do mơ hồ - bạn muốn break
ra một tuyên bố if
(mà không phải là một cấu trúc vòng lặp và do đó không dễ vỡ mỗi định nghĩa), bạn chỉ có thể quấn if
của bạn trong một vòng lặp nhỏ cấu trúc để bạn có thể nhảy ra khỏi khối mã đó.
Xin lưu ý rằng đây là một tổng hack và thông thường bạn sẽ không muốn làm điều này:
do if ($foo)
{
// Do something first...
// Shall we continue with this block, or exit now?
if ($abort === true) break;
// Continue doing something...
} while (false);
Ví dụ trên được lấy từ một comment in the PHP docs
Nếu bạn thắc mắc về cú pháp: Nó hoạt động vì cú pháp viết tắt được sử dụng ở đây. Các dấu ngoặc nhọn bên ngoài có thể được bỏ qua vì cấu trúc vòng lặp chỉ chứa một câu lệnh duy nhất: if ($foo) { .. }
.
Ví dụ khác về điều này:
do $i++; while ($i < 100)
tương đương với do { $i++; } while ($i < 100)
.
cho php không js. tôi không thể cho rằng họ cư xử như vậy. –
gee - tôi đã phải ngừng sử dụng jQuery rất nhiều. tại sao điều này có được một downvote? 1, câu hỏi hoàn hảo hợp lý và đặt ra tốt. – mrtsherman
tôi chỉ hỏi câu hỏi bởi vì (vì lý do gì) tôi không thể quấn đầu của tôi xung quanh doc tài liệu php và ví dụ của họ. tất cả đều tốt. Tôi không ở đây để có được phù hiệu và điểm, chỉ là câu trả lời tốt. –