程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> php中數組遍歷循環實現程序

php中數組遍歷循環實現程序

編輯:關於PHP編程

在php中對數組遍歷用得最多要算是foreac,while,for這幾種方法了,下面我們來介紹這三種遍歷數組的實現程序代碼吧。

經常會有人問我, PHP的數組, 如果用foreach來訪問, 遍歷的順序是固定的麼? 以什麼順序遍歷呢?
比如:

 代碼如下 復制代碼 <?php$arr['laruence'] = 'huixinchen';
$arr['yahoo'] = 2007;
$arr['baidu'] = 2008;
foreach ($arr as $key => $val)
{
//結果是什麼?
}

又比如:

 代碼如下 復制代碼

<?php
$arr[2] = 'huixinchen';
$arr[1] = 2007;$arr[0] = 2008;
foreach ($arr as $key => $val)
{
//現在結果又是什麼?
}

HashTable結構示意圖

, 當我們使用, 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

 代碼如下 復制代碼 for($i=0,$l=count($arr); $i<$l; $i++)

{ //這個時候,不能認為是順序遍歷(線性遍歷)}

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved