国产探花免费观看_亚洲丰满少妇自慰呻吟_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程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 象州县| 萝北县| 黄骅市| 凤城市| 天门市| 宝山区| 百色市| 磴口县| 若尔盖县| 黎川县| 新宁县| 汉川市| 宁海县| 白山市| 华安县| 辛集市| 江孜县| 南丰县| 荣成市| 南皮县| 敦化市| 成安县| 常宁市| 五峰| 满洲里市| 兰考县| 义乌市| 南汇区| 都安| 黄陵县| 弥勒县| 新化县| 武川县| 丰台区| 镇雄县| 新蔡县| 临清市| 二连浩特市| 高邑县| 延安市| 宣恩县|