PHP數組遍歷與實現原理
阿新 • • 發佈:2018-07-14
aid undefined 普通 並不是 關聯 off 數組遍歷 按順序 reac 一維數組遍歷(普通)
一、for與foreach遍歷結果順序一致
$arr = array(‘max‘,‘xiaoli‘,‘xiaowang‘,‘laosan‘);
//for遍歷
for($i=0;$i<count($arr);$i++){
echo $arr[$i];//max xiaoli xiaowang laosan
}
//foreach遍歷
foreach($arr as $item){
echo $item;//max xiaoli xiaowang laosan
}
二、for與foreach遍歷結果不一致
$arr = array(); $arr[]=‘max‘; $arr[2] =‘xiaoli‘; $arr[]=‘xiaowang‘; $arr[1]=‘laosan‘; //for遍歷 for($i=0;$i<count($arr);$i++){ echo $arr[$i];//max laosan xiaoli xiaowang } //foreach遍歷 foreach($arr as $item){ echo $item;//max xiaoli xiaowang laosan }
一維數組遍歷(關聯)
$arr = array(
‘name‘=>‘max‘,
‘age‘=>18,
‘address‘=>‘北京‘
);
//for遍歷
for($i=0;$i<count($arr);$i++){
echo $arr[$i];//undefined offset 0 1 2(未定義下標,無法讀取)
}
//foreach遍歷
foreach($arr as $item){
echo $item;//max 18 北京
}
二維數組遍歷(普通)
$arr = array( array(‘name‘,‘age‘,‘address‘), array(‘北京‘,‘上海‘,‘深圳‘) ); //按順序輸出 for($i=0;$i<count($arr);$i++){ for($j=0;$j<count($arr[$i]);$j++){ echo $arr[$i][$j];//name age address 北京 上海 深圳 } //echo $arr[$i]; } //foreach遍歷 foreach($arr as $item){ foreach($item as $o){ echo $o;//name age address 北京 上海 深圳 } }
二維數組遍歷(關聯)
$arr = array( array(‘name‘=>‘max‘,‘age‘=>18,‘address‘=>‘beijing‘), array(‘city‘=>‘beijing‘,‘area‘=>‘haidian‘) ); //for遍歷 for($i=0;$i<count($arr);$i++){ for($j=0;$j<count($arr[$i]);$j++){ echo $arr[$i][$j];//undefind offset (沒有定義下標) } } //foreach遍歷 foreach($arr as $item){ foreach($item as $o){ echo $o;//max 18 beijing beijing haidian } }
實現原理
PHP數組是一種hash表,hash表的一個特點就是查詢速度快。
關聯數組之所以無法用for循環的遍歷,是因為在hash表中並不是按順序存儲的。
PHP數組遍歷與實現原理