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表中并不是按顺序存储的。

转载于:https://blog.51cto.com/12008764/2141998

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值