來說下php數組的遍曆,可能很多人會質疑,數組的遍曆有啥好說的,一個for迴圈,不就出來了,其實不然,for迴圈遍曆php數組是最糟糕的php代碼,下面對比詳細分析下。
大家都知道C++,C#在定義數組的時候會在棧區分配連續固定大小的記憶體空間給陣列變數,C++一般用for迴圈遞增位移量遍曆數組;C#除了for迴圈,還可以使用foreach遍曆;那php呢??經常會看到下面的代碼:
<?php$arr = array(0=>"zxp",1=>"male",2=>"北京西三旗");for($i=0;$i<count($arr);$i++){echo $arr[$i];}?>
這樣的代碼暫時沒問題,但是容錯性特低,健壯性特差,一不小心就出錯了。php數組並不是連續的記憶體空間,無法使用連續的位移量遍曆數組,並且php數組可伸縮,比如上面代碼$arr插入一個元素$arr[5]=5,for迴圈肯定要出錯了。
php數組遍曆要使用foreach和while,下邊分別給出這兩種遍曆法
<?php$arr = array(//"comment"=>"personal information",0=>"zxp",1=>"male","age"=>29,2=>"北京西三旗");$arr[4] = "進階開發工程師";foreach ($arr as $key => $value) {echo $key.':'.$value.'</br>';}?>
如上代碼,遍曆的事情交給foreach,遍曆到的數組元素,鍵名賦值給$key,值賦值給$value。
<?php$arr = array(0=>"zxp",1=>"male","age"=>29,2=>"北京西三旗");reset($arr);while (list($key,$value) = each($arr)){echo $key.':'.$value.'</br>';}?>
如上代碼,數組遍曆的事情交給each函數。在使用while迴圈加list操作加each函數遍曆php數組的時候一定要注意:在while迴圈前,調用下reset函數,將數組指標指向第一個元素,不然,你會發現遍曆出來的元素不夠數目。