php 數組遍曆效能的比較_PHP教程

來源:互聯網
上載者:User
for迴圈只對數字索引有限;for和foreach遍曆結束後不需要對資料進行reset()操作即可供下次遍曆,而each方法則需要

//a
$arr=array('a'=>'abc','b'=>123,'c'=>true);
//b
//$arr=range('a','d');

//1
for($i=0;$i echo $arr[$i].', ';
echo '
';

//2
foreach($arr as $key)
echo "$key, ";
echo '
';

//3
foreach($arr as $key=>$val)
echo "$key-$val, ";
echo '
';

//4
reset($arr);
while($item=each($arr)){
echo $item['key'].'-'.$item['value'].', ';
}
echo '
';

//5
reset($arr);
while(list($key,$val)=each($arr)){
echo "$key-$val, ";
}
echo '
';
?>使用語句a $arr=array('a'=>'abc','b'=>123,'c'=>true); 對$arr進行初始化得到數字索引數組,輸出如下:

, , ,
abc, 123, 1,
a-abc, b-123, c-1,
a-abc, b-123, c-1,
a-abc, b-123, c-1, 使用語句b $arr=range('a','d'); 對$arr進行初始化得到關聯陣列,輸出如下:

a, b, c, d,
a, b, c, d,
0-a, 1-b, 2-c, 3-d,
0-a, 1-b, 2-c, 3-d,
0-a, 1-b, 2-c, 3-d,

經過反覆多次測試,結果表明,對於遍曆同樣一個數組,foreach速度最快,最慢的則是while。foreach比while大約快20% ~ 30%左右。隨後再把數組下標增加到500000、5000000測試結果也一樣。但從原理上來看,foreach是對數組副本進行操作(通過拷貝數組),而while則通過移動數組內部指標進行操作,一般邏輯下認為,while應該比foreach快(因為foreach在開始執行的時候首先把數組複製進去,而while直接移動內部指標。),但結果剛剛相反。原因應該是,foreach是PHP內部實現,而while是通用的迴圈結構


http://www.bkjia.com/PHPjc/444745.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/444745.htmlTechArticlefor迴圈只對數字索引有限;for和foreach遍曆結束後不需要對資料進行reset()操作即可供下次遍曆,而each方法則需要 ?php教程 //a $arr=array('a'='a...

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.