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

一、遍历

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

数组长度 = count(数组)

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

for($i=0;$i'max','age'=>34,'address'=>'北京');

for($i=0;$i

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 $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 $vo){    

        $temp =  $vo;//123456
    }

}

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

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

        $temp =  $vo;
    }

}

你可能感兴趣的:(代码片段)