PHP代码:一维数组遍历与性能分析

一、遍历

for循环,需要知道数组的长度,从下标0开始,到n-1结束。

数组长度 = count(数组)

//普通数组
$arr = array(1,2,3,4,5,6);

for($i=0;$i<count($arr);$i++){

    echo $arr[$i];//123456
}

//关联数组,无法用for循环遍历
$arr = array('name'=>'max','age'=>34,'address'=>'北京');

for($i=0;$i<count($arr);$i++){

    echo $arr[$i];//undefind offset 0
}

foreach循环,无需知道数组长度,根据元素在数组中的先后顺序进行。

循环结果与for循环可能出现不一致。

//普通数组
$arr = array(1,2,3,4,5,6);

foreach($arr as $vo){

    echo $vo;//123456
}

//关联数组
$arr = array('name'=>'max','age'=>34,'address'=>'北京');

foreach($arr as $key=>$vo){

    echo $key;//name,age,address
    echo $vo;//max,34,北京
}

普通数组,for循环与foreach循环结果不一致示例

//普通数组
$arr = array();
$arr[1] = 'max';
$arr[]  = 'xiaoli';
$arr[0] = 'xiaoming';
$arr[]  = 'zhangsan';

//for循环,输出顺序为xiaoming,max,xiaoli,zhangsan
for($i=0;$i<count($arr);$i++){

    echo $arr[$i];
}

//foreach循环,输出顺序为max,xiaoli,xiaoming,zhangsan

foreach($arr as $key=> $vo){

    echo $vo;
}

哪个速度更快,foreach循环要比for循环更快!

foreach, as key=> k e y => vo模式比 as =>$vo模式要慢

for, i<count( i < c o u n t ( arr)模式比$i<数组长度变量模式要慢

//for循环,最快2.13秒

$len = count($arr);

for($j=0;$j<10000000;$j++){

    //耗时2.13秒,每次无需计算数组长度
    for($i=0;$i<$len;$i++){

        $temp =  $arr[$i];
    }   
}


for($j=0;$j<10000000;$j++){

    //耗时3.13秒,每次重新计算数组长度
    for($i=0;$i<count($arr);$i++){

        $temp =  $arr[$i];
    }   
}

//foreach循环,最快1.29秒
for($j=0;$j<10000000;$j++){

    //耗时2.00秒
    foreach($arr as $key=> $vo){    

        $temp =  $vo;//123456
    }

}

for($j=0;$j<10000000;$j++){

    //耗时1.29秒
    foreach($arr as $vo){    

        $temp =  $vo;
    }

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值