PHP数组遍历与实现原理
一、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表中并不是按顺序存储的。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。