首頁  >  文章  >  後端開發  >  PHP遍歷數組的方法及效率對比

PHP遍歷數組的方法及效率對比

伊谢尔伦
伊谢尔伦原創
2017-01-16 14:19:351246瀏覽

這篇文章主要介紹了PHP循環遍歷數組的幾種方法list()、each()和while總結,本文重點在於對介紹這幾種方法的使用講解以及相關的效率比對,供需要的朋友可以參考。

foreach遍歷數組

我們在運用數組時,常常要遍歷數組並獲得各個鍵或者元素值,php提供了一些專門遍歷數組的函數。這裡先介紹foreach遍歷數組函數的用法。

結構形式:

foreach ( array_expression as $value ) statement
/* array_expression是要遍历的数组
   as作用是将数组的值赋给$value
   statement是后续语句
*/

實例1:

<?php
 &#39;白色&#39; ,
  &#39;black&#39; => &#39;黑色&#39; ,
  &#39;red&#39; => &#39;红色&#39; ,
  &#39;green&#39; => &#39;绿色&#39;,
  &#39;yellow&#39; => &#39;黄色&#39;);
 foreach( $color as $c) echo $c ."
";    
?>

不僅可透過foreach為:

foreach ( array_expression as $key => $value ) statement


for遍歷數組

除了php預先定義的一些遍歷數組函數,我們還可以利用for語句的循環特性將數組遍歷輸出。以下舉例:

foreach( $color as $c) echo $c ."<br>";

while() 與list(),each()搭配使用 遍歷陣列

所使用的語法格式如下:

foreach( $color as $key => $c) echo $key.$c ."<br>";

下面來測試幾種遍歷陣列的速度

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

<?php 
 $a[]="张学友"; /* 定义数组 */
 $a[]="刘德华";
 $a[]="黎明";
 $a[]="郭富城";
 $s=count($a); /* 统计数组个数 */
 for($i=0;$i<$s;$i++){ /* 遍历数组 */
  echo $a[$i] ."<br /-->"; /* 显示数组 */
 }
?>

測試結果:

<?php 
    $urls= array(&#39;aaa&#39;,&#39;bbb&#39;,&#39;ccc&#39;,&#39;ddd&#39;); 
    while(list($key,$val)= each($urls)) { 
      echo "This Site url is $val.<br />"; 
    } 
?>

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

希望本文對大家有幫助。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn