国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > PHP > 正文

PHP遍歷數組的三種方法及效率對比分析

2024-05-04 23:31:19
字體:
來源:轉載
供稿:網友

這篇文章主要介紹了PHP遍歷數組的三種方法及效率對比,實例分析了foreach、while與for三種遍歷數組的方法與相關的效率比對,具有一定參考借鑒價值,需要的朋友可以參考下

本文實例分析了PHP遍歷數組的三種方法及效率對比。分享給大家供大家參考。具體分析如下:

今天有個朋友問我一個問題php遍歷數組的方法,告訴她了幾個。順便寫個文章總結下,如果總結不全還請朋友們指出

第一、foreach()

foreach()是一個用來遍歷數組中數據的最簡單有效的方法。

 

 
  1. <?php  
  2. $urlsarray('aaa','bbb','ccc','ddd'); 
  3. foreach ($urls as $url){  
  4. echo "This Site url is $url! <br />"
  5. }  
  6. ?> 

顯示結果:

 

 
  1. This Site url is aaa  
  2. This Site url is bbb  
  3. This Site url is ccc  
  4. This Site url is ddd 

第二、while() 和 list(),each()配合使用。

 

 
  1. <?php  
  2. $urlsarray('aaa','bbb','ccc','ddd');  
  3. while(list($key,$val)= each($urls)) {  
  4. echo "This Site url is $val.<br />";  
  5. }  
  6. ?>  

顯示結果:

 

 
  1. This Site url is aaa 
  2. This Site url is bbb 
  3. This Site url is ccc 
  4. This Site url is ddd 

第三、for()運用for遍歷數組

 

 
  1. <?php  
  2. $urlsarray('aaa','bbb','ccc','ddd');  
  3. for ($i= 0;$icount($urls); $i++){  
  4. $str$urls[$i];  
  5. echo "This Site url is $str.<br />";  
  6. }  
  7. ?> 

顯示結果:

 

 
  1. This Site url is aaa  
  2. This Site url is bbb  
  3. This Site url is ccc  
  4. This Site url is ddd  

有時候有人也在問這幾種遍歷數組的方法哪個更快捷些呢,下面做個簡單的測試就明白了

下面來測試三種遍歷數組的速度

一般情況下,遍歷一個數組有三種方法,for、while、foreach。其中最簡單方便的是foreach。下面先讓我們來測試一下共同遍歷一個有50000個下標的一維數組所耗的時間。

 

 
  1. <?php  
  2. $arrarray();  
  3. for($i= 0; $i< 50000; $i++){  
  4. $arr[]= $i*rand(1000,9999);  
  5. }  
  6. function GetRunTime()  
  7. {  
  8. list($usec,$sec)=explode(" ",microtime());  
  9. return ((float)$usec+(float)$sec);  
  10. }  
  11. ######################################  
  12. $time_start= GetRunTime();  
  13. for($i= 0; $icount($arr); $i++){  
  14. $str$arr[$i];  
  15. }  
  16. $time_end= GetRunTime();  
  17. $time_used$time_end$time_start;  
  18. echo 'Used time of for:'.round($time_used, 7).'(s)<br /><br />';  
  19. unset($str$time_start$time_end$time_used);  
  20. ######################################  
  21. $time_start= GetRunTime();  
  22. while(list($key$val)= each($arr)){  
  23. $str$val;  
  24. }  
  25. $time_end= GetRunTime();  
  26. $time_used$time_end$time_start;  
  27. echo 'Used time of while:'.round($time_used, 7).'(s)<br /><br />';  
  28. unset($str$key$val$time_start$time_end$time_used);  
  29. ######################################  
  30. $time_start= GetRunTime();  
  31. foreach($arr as$key=> $val){  
  32. $str$val;  
  33. }  
  34. $time_end= GetRunTime();  
  35. $time_used$time_end$time_start;  
  36. echo 'Used time of foreach:'.round($time_used, 7).'(s)<br /><br />';  
  37. ?> 

測試結果:

 

 
  1. Used time of for:0.0228429(s)  
  2. Used time of while:0.0544658(s)  
  3. Used time of foreach:0.0085628(s) 

經過反復多次測試,結果表明,對于遍歷同樣一個數組,foreach速度最快,最慢的則是while。從原理上來看,foreach是對數組副本進行操作(通過拷貝數組),而while則通過移動數組內部指標進行操作,一般邏輯下認為,while應該比foreach快(因為foreach在開始執行的時候首先把數組復制進去,而while直接移動內部指標。),但結果剛剛相反。原因應該是,foreach是PHP內部實現,而while是通用的循環結構。所以,在通常應用中foreach簡單,而且效率高。在PHP5下,foreach還可以遍歷類的屬性。

希望本文所述對大家的php程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 屏南县| 商都县| 阿瓦提县| 德清县| 金川县| SHOW| 清河县| 濮阳县| 金阳县| 宝丰县| 嘉鱼县| 鹤庆县| 新巴尔虎左旗| 成武县| 桦甸市| 三河市| 饶河县| 乐东| 资兴市| 涿鹿县| 山西省| 黄平县| 芦溪县| 双柏县| 视频| 三河市| 彩票| 乌兰浩特市| 德格县| 电白县| 永福县| 钟山县| 珠海市| 黄石市| 平湖市| 汶上县| 兰坪| 乌兰察布市| 宁波市| 宜昌市| 中江县|