Có bất kỳ vấn đề nào liên quan đến hiệu quả, khi sử dụng cuộc gọi hàm trong vòng lặp foreach. Ví dụ:Sử dụng cuộc gọi chức năng trong vòng lặp foreach
foreach ($this->getValues() as $value) {
//Do something with $value
}
so
$values = $this->getValues();
foreach ($values as $value) {
//Do something with $value
}
Về cơ bản, là php đủ thông minh để gọi $ this-> getValues () một lần duy nhất trong ví dụ đầu tiên, hoặc dùng nó gọi nó là trên mỗi lần lặp. Nếu nó gọi nó trên mỗi lần lặp, sau đó như thế nào theo dõi trong đó yếu tố hiện tại,
* mọi thứ * bạn làm bên trong vòng lặp sẽ giảm hiệu quả. – goat
Vâng, nhược điểm duy nhất với phương pháp thứ hai là bạn yêu cầu một biến phụ (chiếm bộ nhớ). Vì vậy, tôi sẽ đi với cách tiếp cận đầu tiên. –
trụ, "biến phụ" không thực sự ở đó. PHP sử dụng copy-on-write có nghĩa là '$ values' và foreach loop sẽ tham chiếu cùng một tập dữ liệu. Điều duy nhất cần xem xét là khi biến có thể được thu thập rác, mà là trước đó trong ví dụ đầu tiên (ở cuối vòng lặp) hơn trong lần thứ hai (ở cuối hàm/tệp hoặc khi 'unset()' là gọi là). –