2011-09-02 6 views
13

Tôi có cần phải sử dụng lệnh dừng ở đây hoặc nó sẽ dừng vòng lặp và chỉ trả lại một lần?PHP - Nghỉ sau khi trở về?

for($i = 0; $i < 5; $i ++) { 
    if($var[$i] === '') return false; 
    // break; 
} 

Cảm ơn bạn!

Trả lời

12

Nó sẽ chạy một lần, dừng vòng lặp và thoát khỏi hàm/phương thức.

Có thể lập luận rằng đây là kiểu xấu. Nó rất dễ dàng để bỏ qua rằng return sau đó, đó là xấu để gỡ lỗi và bảo trì.

Sử dụng break có thể sạch hơn:

for($i = 0; $i < 5; $i ++) { 
    if($var[$i] === '') 
    { set_some_condition; 
     break; 
    } 
} 

if (some_condition) 
return; 
7

Nếu bạn sử dụng return, chức năng của bạn (hoặc toàn bộ kịch bản) sẽ trở lại - tất cả các mã sau đó sẽ không được thực thi. Vì vậy, để trả lời câu hỏi của bạn: break không bắt buộc ở đây. Tuy nhiên, nếu break không được nhận xét ở đây, vòng lặp sẽ dừng sau một lần lặp. Đó là vì câu lệnh if của bạn không sử dụng niềng răng ({ ... }) nên nó chỉ bao gồm câu lệnh return (nói cách khác: break trong ví dụ của bạn luôn được thực hiện).

2

Cập nhật:

PHP 7 đòi hỏi một return. Không cần sử dụng break; vì vòng lặp kết thúc vào return.

A break; thường được sử dụng trong công tắc hoặc vòng lặp bất cứ khi nào bạn tìm thấy mặt hàng cần thiết.

Ví dụ:

$items = ['a' , 'b' , 'c']; 

foreach($items as $item) 
{ 
    if($item == 'a') 
    { 
     return true; // the foreach will stop once 'a' is found and returns true. 
    } 

    return false; // if 'a' is not found, the foreach will return false. 
} 
+0

'return' hoạt động. Ví dụ đơn giản: '$ items = ['a', 'b', 'c']; foreach ($ items là $ item) { echo $ item; nếu ($ item == 'a') trả về true; } ' – EGurelli

+1

Cảm ơn @EGurelli. Tôi đã thêm và chỉnh sửa ví dụ của bạn. –