在php中對數組遍歷用得最多要算是foreac,while,for這幾種方法了,下面我們來介紹這三種遍歷數組的實現程序代碼吧。
經常會有人問我, PHP的數組, 如果用foreach來訪問, 遍歷的順序是固定的麼? 以什麼順序遍歷呢?
比如:
又比如:
代碼如下 復制代碼<?php
$arr[2] = 'huixinchen';
$arr[1] = 2007;$arr[0] = 2008;
foreach ($arr as $key => $val)
{
//現在結果又是什麼?
}
, 當我們使用, each/next系列函數來遍歷的時候, 也是通過移動數組的內部指針而實現了順序遍歷, 這裡有一個問題, 比如:
代碼如下 復制代碼<?php
$arr = array(1,2,3,4,5);
foreach ($arr as $v) {//可以獲取}
while (list($key, $v) = each($arr))
{//獲取不到}
?>
了解到我剛才介紹的知識, 那麼這個問題也就很明朗了, 因為foreach會自動reset, 而while這塊不會reset, 所以在foreach結束以後, pInternalPointer指向數組最末端, while語句塊當然訪問不到了, 解決的辦法就是在each之前, 先reset數組的內部指針.
也就是說, PHP中遍歷數組的順序, 是和元素的添加先後相關的, 那麼, 現在我們就很清楚的知道, 文章開頭的問題的輸出是:
huixinchen
2007
2008
所以, 如果你想在數字索引的數組中按照索引大小遍歷, 那麼你就應該使用for, 而不是foreach
{ //這個時候,不能認為是順序遍歷(線性遍歷)}