2009-12-12 23 views
19

Trong đoạn mã sau:Việc sử dụng một hàm trong vòng lặp foreach có lưu trữ kết quả hoặc gọi hàm mỗi lần không?

function a(){ 
    echo 'a'; 
    return array(1,2,3,4); 
} 

foreach(a() as $t){ 
    echo $t;  
} 

Chúng ta có thể thấy một() được gọi là một lần duy nhất, và có vẻ như giá trị trả về sẽ được lưu trữ ...
Nhưng sau đó tôi nhận được để xem this debate (see comments on the question) tôi thiếu cái gì?

+0

Hãy thử thay đổi thành 'for ($ a = 0; $ a <= count (a()); $ a ++)' và xem những gì bạn nhận được :) –

Trả lời

24

Không, thử nghiệm của bạn là kết thúc.

Không có ý nghĩa gì khi đánh giá biểu thức đầu tiên nhiều hơn một lần. Đó là tiền đề cơ bản của vòng lặp foreach.

Vòng lặp for có ba đối số và nó đánh giá lần lặp thứ hai và thứ ba.

Các vấn đề liên quan