這篇文章主要介紹了PHP循環遍歷數組的幾種方法list()、each()和while總結,本文重點在於對介紹這幾種方法的使用講解以及相關的效率比對,供需要的朋友可以參考。
foreach遍歷數組
我們在運用數組時,常常要遍歷數組並獲得各個鍵或者元素值,php提供了一些專門遍歷數組的函數。這裡先介紹foreach遍歷數組函數的用法。
結構形式:
foreach ( array_expression as $value ) statement /* array_expression是要遍历的数组 as作用是将数组的值赋给$value statement是后续语句 */
實例1:
<?php '白色' , 'black' => '黑色' , 'red' => '红色' , 'green' => '绿色', 'yellow' => '黄色'); foreach( $color as $c) echo $c ." "; ?>
不僅可透過foreach為:
foreach ( array_expression as $key => $value ) statement
除了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('aaa','bbb','ccc','ddd'); 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還可以遍歷類別的屬性。 希望本文對大家有幫助。