PHP数组遍历知识摘要(包括遍历方法、数组指针操作函数、数组时间)。

3种数组遍历方法介绍

1。foreach()

foreach()是遍历数组中的数据的最简单和最有效的方式。

# example1:

复制代码代码如下所示:

< PHP

颜色=阵列($',蓝色的,绿色的,'');

foreach(colorsas美元美元的颜色){

你喜欢颜色吗;

}

>



显示结果:

你喜欢红色吗

你喜欢蓝色吗

你喜欢绿色吗

你喜欢黄色吗

2。而()

虽然()通常与列表()一起使用,每个()。

#例子:

复制代码代码如下所示:

< PHP

颜色=阵列($',蓝色的,绿色的,'');

当(列表($,$)=每个($颜色)){

回声美元价值其他列表;

}

>

显示结果:

其他红色名单。

其他蓝色名单。

其他绿色名单。

其他黄色名单。

三.对于()

#例子:

复制代码代码如下所示:

< PHP

$ ARR =阵列(0 >零

为($我= 0;$我<计数($ ARR);$ i++){

$str = $ ARR { $我};

回声数为海峡;

}

>

显示结果:

号码是零。

号码是一。

号码是二。

两。数组指针操作函数介绍

(关键)

混合密钥(阵列input_array)

关键()函数返回在input_array指针的当前位置的关键要素。

#例

复制代码代码如下所示:

< PHP

美元=数组(俄亥俄=哥伦布

你能说出这些州的首府吗;

当(键=键(大写)){

回波键。;

下一个(大写字母);

(键)每一个调用都不会推进指针。

}

>

显示结果:

你能说出这些州的首府吗

俄亥俄州

东和

亚利桑那州

reset()

混合复位(阵列input_array)

reset()函数是用来设置的input_array指针返回数组的开始位置。这个功能往往是如果你需要查看或处理一个脚本相同的阵列中多次用到,而且常常用到的功能在最终排序。

# example5附加代码# example1

复制代码代码如下所示:

< PHP

颜色=阵列($',蓝色的,绿色的,'');

foreach(colorsas美元美元的颜色){

你喜欢颜色吗;

}

重置($颜色);

当(列表($,$)=每个($颜色)){



}

>



显示结果:

你喜欢红色吗

你喜欢蓝色吗

你喜欢绿色吗

你喜欢黄色吗

0 =红色

1 =蓝色

2 =绿色

3 =黄色

注意:将数组分配给另一个数组将重置原始数组指针,所以在这种情况下,如果我们将$颜色分配给另一个变量,它将导致一个无限循环。

例如,S1 =美元美元的颜色;添加到while循环和再执行的代码,和浏览器将不间断的结果。

(一)

每个阵列(阵列input_array)

每个()函数返回输入数组当前的键/值对,并将指针前进到一个位置。返回的数组包含四个键,0个键和键包含键,键1和值包含相应的数据。如果每个(前面)指针的执行位于数组的结尾,则返回false。

# G酰化酶

复制代码代码如下所示:

< PHP

美元=数组(俄亥俄=哥伦布

美元=每一个(大写字母);

print_r(合一);

>

显示结果:

数组({ 1 { }值哥伦布=哥伦布哥伦布{ 0 } =俄亥俄俄亥俄)



电流()()(),接下来,沪指(),最后()

混合电流(阵列target_array)

目前()函数返回一个数组的值,位于该target_array阵列电流指针的位置。不像下(),(),沪指端()函数,电流()不移动指针。

下一个()函数返回一个数组值,该值立即放在当前数组指针的下一个位置。

沪指()函数返回当前指针数组值第一的位置,如果指针是原来位于数组的第一个位置,则返回FALSE。

结束()函数指针移动到最后位置的target_array返回最后一个元素。



# example7

复制代码代码如下所示:

< PHP

水果=数组(苹果

水果=当前(水果);

回音果。;

水果=下一个(水果);

回音果。;

水果=沪指美元($水果); / /返回苹果

回音果。;

水果=结束(水果);

回音果。;

>

显示结果:

苹果

橙色

苹果

香蕉

三。测试三个遍历数组的速度

一般来说,有三种方法来遍历数组,,,和foreach。最简单的和方便的一个foreach。让我们尝试一起遍历一维数组的下标50000的时间。

测试环境:

英特尔的核心due2 2ghz

2gb 1067mhz DDR3

Mac OS X 10.5.7

Apache 2.0.59

MySQL 5.0.41

PHP 5.2.6



# example8

复制代码代码如下所示:

< PHP

ARR =阵列(美元);

($ i = 0;$ i < 50000;$ + +){

$ ARR { } =我*兰德(10009999);

}

getRuntime()函数

{

列表(USEC美元美元,SEC)=爆炸(

返回((浮动)$ USEC +(浮动)$秒);

}

######################################

time_start美元= getRuntime();

为($我= 0;$我<计数($ ARR);$ i++){

$str = $ ARR { $我};

}

time_end美元= getRuntime();

time_used美元美元美元time_start time_end =;

echo'used时间为:'轮(time_used美元,7)。(s);

unset($str,time_start美元美元美元,time_end,time_used);

######################################

time_start美元= getRuntime();

而(表(美元美元关键,Val)=每($ ARR)){

美元= $;

}

time_end美元= getRuntime();

time_used美元美元美元time_start time_end =;

而echo'used时间:'轮(time_used美元,7)。(s);

unset($str,美元美元美元的关键,Val,time_start,time_end美元,美元time_used);

######################################

time_start美元= getRuntime();

foreach(ARR美元美元美元关键= > Val){

美元= $;

}

time_end美元= getRuntime();

time_used美元美元美元time_start time_end =;

echo'used时间分别是:'轮(time_used美元,7)。(s);

>

测试结果:

使用时间为:0.0228429(s)

使用时间:0.0544658(s)

foreach使用时间:0.0085628(S)

经过反复试验,结果表明,对于相同的数组遍历,foreach速度最快,最慢的是时间。从原理上看,一是对数组的拷贝操作(复制、阵列),而指数通过移动内部操作数组,虽然应该比foreach速度一般的逻辑(因为foreach在第一阵列,开始实施时,直接将内部指标。)但结果正好相反。原因是,foreach是PHP内部实现,虽然是一个普遍的环结构,因此,在通常的应用,则是简单而有效的。在PHP5,foreach可以遍历的C的属性小姑娘。