Sự khác biệt giữa phá vỡ và tiếp tục trong PHP?


Câu trả lời:


517

breakkết thúc một vòng lặp hoàn toàn, continuechỉ cần tắt các lần lặp hiện tại và chuyển sang lần lặp tiếp theo.

while ($foo) {   <--------------------┐
    continue;    --- goes back here --┘
    break;       ----- jumps here ----┐
}                                     |
                 <--------------------┘

Điều này sẽ được sử dụng như vậy:

while ($droid = searchDroids()) {
    if ($droid != $theDroidYoureLookingFor) {
        continue; // ..the search with the next droid
    }

    $foundDroidYoureLookingFor = true;
    break; // ..off the search
}

56
Việc lạm dụng các chức năng này dẫn đến kết quả này: flickr.com/photos/24973901@N04/2762458387
neokio

7
Yêu câu trả lời này! Nhắc nhở tôi về đề xuất của WP.org về Điều kiện Yoda: make.wordpress.org/core/handbook/coding-stiterias/php/ Kẻ
Bob Gregor

4
7 năm sau câu trả lời này nhưng đáng để nói điều này. như trong các tài liệu php từ v4 breakcontinuegiống nhau trong switch. cả hai thoát khỏi chuyển đổi. để thoát khỏi vòng lặp bên ngoài nếu có hoặc sử dụng continue 2.
Amin.Qarabaqi

@BobGregor Hiện tại phần đó có thể được tìm thấy tại make.wordpress.org/core/handbook/best-practices/ Kẻ
Douwe de Haan

@deceze, ví dụ này với mã là xấu. Bạn gán biến không được sử dụng ở bất cứ đâu. Đề nghị chỉnh sửa là dễ đọc hơn.
Tajni

49

thoát ra khỏi vòng lặp bạn đang ở, tiếp tục bắt đầu với chu kỳ tiếp theo của vòng lặp ngay lập tức.

Thí dụ:

$i = 10;
while (--$i)
{
    if ($i == 8)
    {
        continue;
    }
    if ($i == 5)
    {
        break;
    }
    echo $i . "\n";
}

sẽ xuất ra:

9
7
6

1
+1; giống như về cơ bản mọi ngôn ngữ khác sử dụng các từ khóa này.
Karl Knechtel

+1; chỉ cần giải thích đơn giản và ví dụ tốt, thậm chí bột while(--$i)là một chút khó khăn cho người mới.

@Omeid Tôi đồng ý rằng điều đó thật khó khăn ... nhưng tôi không chắc về cú pháp vòng lặp của php và lười biếng tìm kiếm nó
Hinek

Đây là một ví dụ tuyệt vời!
demuro1

1
Ví dụ tuyệt vời. (Dòng echo $ i. "\ N" cần một dấu chấm phẩy ở cuối.)
user3563097

16

PHÁ VỠ:

ngắt kết thúc thực hiện hiện tại cho, foreach, while, do-while hoặc cấu trúc chuyển đổi.

TIẾP TỤC:

tiếp tục được sử dụng trong các cấu trúc vòng lặp để bỏ qua phần còn lại của vòng lặp hiện tại và tiếp tục thực hiện tại đánh giá điều kiện và sau đó là bắt đầu của lần lặp tiếp theo.

Vì vậy, tùy thuộc vào nhu cầu của bạn, bạn có thể đặt lại vị trí hiện đang được thực thi trong mã của mình thành một mức khác nhau của việc lồng hiện tại.

Ngoài ra, xem tại đây để biết chi tiết nghệ thuật Break vs Tiếp tục với một số ví dụ


14

Đối với Bản ghi:

Lưu ý rằng trong PHP, câu lệnh switch được coi là một cấu trúc lặp cho các mục đích tiếp tục .


Tôi chỉ bị cắn bởi "tính năng" này. Làm cách nào tôi có thể tiếp tục vòng lặp while dựa trên những thứ được phát hiện trong trường hợp chuyển đổi?
MattBianco

1
@MattBianco, bạn sử dụng continue 2trong những trường hợp đó.
flaviovs

5

break được sử dụng để thoát khỏi câu lệnh loop, nhưng tiếp tục chỉ dừng script ở điều kiện cụ thể và sau đó tiếp tục câu lệnh loop cho đến khi kết thúc ..

for($i=0; $i<10; $i++){
    if($i == 5){
        echo "It reach five<br>";
        continue;
    }
    echo $i . "<br>";
}

echo "<hr>";

for($i=0; $i<10; $i++){
    if($i == 5){
         echo "It reach end<br>";
         break;
    }
    echo $i . "<br>";
}

Hy vọng nó có thể giúp bạn;


4

Break kết thúc cấu trúc vòng lặp / điều khiển hiện tại và bỏ qua đến cuối của nó, bất kể vòng lặp đó có lặp lại bao nhiêu lần nữa.

Tiếp tục bỏ qua để bắt đầu lần lặp tiếp theo của vòng lặp.


4

'Tiếp tục' được sử dụng trong các cấu trúc vòng lặp để bỏ qua phần còn lại của vòng lặp hiện tại và tiếp tục thực hiện tại đánh giá điều kiện và sau đó là bắt đầu của lần lặp tiếp theo.

'break' kết thúc việc thực hiện cấu trúc hiện tại cho, foreach, while, do-while hoặc switch.

break chấp nhận một đối số số tùy chọn cho nó biết có bao nhiêu cấu trúc bao quanh được tách ra.

Kiểm tra các liên kết sau:

http://www.php.net/manual/en/control-strucenses.break.php

http://www.php.net/manual/en/control-strucenses.cContue.php

Hy vọng nó giúp..


3

break sẽ dừng vòng lặp hiện tại (hoặc truyền một số nguyên để cho nó biết có bao nhiêu vòng lặp để thoát khỏi).

continue sẽ dừng việc lặp lại hiện tại và bắt đầu lần lặp tiếp theo.


2

breaksẽ thoát khỏi vòng lặp, trong khi continuesẽ bắt đầu chu kỳ tiếp theo của vòng lặp ngay lập tức.


2

Tôi không viết bất cứ điều gì tương tự ở đây. Chỉ cần một ghi chú thay đổi từ hướng dẫn PHP.


Thay đổi để tiếp tục

Version Description

7.0.0 - continue outside of a loop or switch control structure is now detected at compile-time instead of run-time as before, and triggers an E_COMPILE_ERROR.

5.4.0   continue 0; is no longer valid. In previous versions it was interpreted the same as continue 1;.

5.4.0   Removed the ability to pass in variables (e.g., $num = 2; continue $num;) as the numerical argument.

Thay đổi cho nghỉ

Version Description

7.0.0   break outside of a loop or switch control structure is now detected at compile-time instead of run-time as before, and triggers an E_COMPILE_ERROR.

5.4.0   break 0; is no longer valid. In previous versions it was interpreted the same as break 1;.

5.4.0   Removed the ability to pass in variables (e.g., $num = 2; break $num;) as the numerical argument.
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.