foreach是對數組副本進行操作(透過拷貝數組),而while則透過移動數組內部指標進行操作,一般邏輯下認為,while應該比foreach快(因為foreach在開始執行的時候首先把數組複製進去,而while直接移動內部指標。
在循環裡進行的是陣列「讀取」操作,則foreach比while快:
複製程式碼 程式碼如下:
foreach ($array as $value) {
echo $value;
}
while (list($key) = each($array)) {
echo $array[$key ];
}
複製程式碼
複製程式碼
複製程式碼
程式碼如下:
快的,這是因為PHP採用的複製機制是“引用計數,寫時複製”,也就是說,即便在PHP裡複製一個變量,最初的形式從根本上說其實
仍然是引用的形式,只有當變量的內容改變時,才會出現真正的複製,之所以這麼做是出於節省記憶體消耗得目的,同時也提升了複製的效率。這樣看來,foreach的高效率讀取操作就不難理解了。另外,既然foreach不適合處理數組寫操作,那麼我們可以得到一個結論,多數情況下,類似foreach ($array as $key => $value)形式的做數組寫操作得代碼都應該被替換成while (list($key) = each($array))。這些技巧產生的速度差異在小項目裡可能並不明顯,但是在類似框架這樣的大項目中,一次請求動輒便會涉及到幾百幾千幾次次數組循環操作,差異就會明顯放大。 以上就介紹了torrentkitty search php foreach、while效能比較,包括了torrentkitty search方面的內容,希望對PHP教程有興趣的朋友有所幫助。