PHP的while 和foreach對數組的操作誰更快

while是通過移動數組內部指標老進行操作。

foreach是對數組副本進行操作。

   在循環數組的“讀”操作裏,foreach的運行速度超過while

   在循環數組的“寫”操作裏,while的運行速度超過foreach

總結:通常認爲,foreach涉及到值複製,一定會比while慢,但實際上,如果僅僅是在循環裏進行數組的讀操作,那麼foreach是很 
快的,這是因爲PHP採用的複製機制是“引用計數,寫時複製”,也就是說,即便在PHP裏複製一個變量,最初的形式從根本上說其實 仍然是引用的形式,只有當變量的內容發生變化時,纔會出現真正的複製,之所以這麼做是出於節省內存消耗得目的,同時也提升了 複製的效率。這樣看來,foreach的高效讀操作就不難理解了。另外,既然foreach不適合處理數組寫操作,那麼我們可以得出一個結 論,多數情況下,類似foreach ($array as $key => $value)形式的做數組寫操作得代碼都應該被替換成while (list($key) = 
each($array))。這些技巧產生的速度差異在小項目裏可能並不明顯,但是在類似框架這樣的大項目中,一次請求動輒便會涉及到幾 
百幾千幾萬次數組循環操作,差異就會明顯放大。

  1. foreach循環數組操作:

            $arr = array('a','b','c');

               foreach($arr as $k=>$a ){

                echo $a;

                }

    2. while循環數組操作:

         while(list($a)=each($arr)){

            echo $a;

           }

上面兩種循環輸出的值都是一樣的。

     鑑於while循環用的少,特此提示一下

       list():將數組的值賦給一些變量。

      each():返回當前元素的鍵名和鍵值,並將內部指針向前移動

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章