偶然從php官網的文件,看到一篇討論while和foreach陣列訪問速度的文章,才知道有next這個關鍵字,而且搭配while來操作,速度會比foreach快上不少…真是如此嗎?花了點時間研究一下。

為什麼用while next會比foreach快?那是因為foreach操作陣列時得先複製一個新的陣列變數參考,而next則是在暨有變數裡移動指標。
註1:
foreach官方文件有寫,只有在進行陣列變數參考reference操作時,才需複製一個新的陣列,該文的測試程式剛好是在用參考。
所以嚴格來講,不是while next快,而是foreach在那種狀況操作下是慢的…
註2:
另外,就該文給的測速範例來看,其實while next少算了一個(後面的討論串有提到)…
使用例:
$tests = array(
array("test1" => "123" , "test2" => "456" , "test3" => "789"),
array("test1" => "111" , "test2" => "222" , "test3" => "333"),
array("test1" => "444" , "test2" => "555" , "test3" => "666"),
array("test1" => "777" , "test2" => "888" , "test3" => "999")
);
foreach ($tests as $test) {
echo $test['test1'].'-'.$test['test2'].'-'.$test['test3'].'';
next($tests);
}
reset($tests);
while ($test = current($tests)) {
echo $test['test1'].'-'.$test['test2'].'-'.$test['test3'].'';
next($tests);
}
原文參考:while
在Google及Yahoo找資料,已成為許多人每天必行的公事。「網路」的無遠弗屆,造就了一個世界級的知識寶庫,著實讓我受益良多。
設立此部落格除用做網路行銷、學習記事與知識管理外,希望也能做些回饋和經驗分享,如果有人能從這裡的文章得到一點幫助就好了...
網站生日:2008/09/16 年紀:41個多月
Arno Ruan
八月 8th, 2009 at 2:58 上午
追求Coging的效能…是程式設計師的功課。XD