Home > php教程 > php手册 > body text

PHP遍历数组的方法汇总

WBOY
Release: 2016-06-13 09:05:30
Original
820 people have browsed it

PHP遍历数组的方法汇总

   今天有个朋友问我一个问题php遍历数组的方法,告诉她了几个。顺便写个文章总结下,如果总结不全还请朋友们指出

  第一、foreach()

  foreach()是一个用来遍历数组中数据的最简单有效的方法。

  ?

1

2

3

4

5

6

$urls= array('aaa','bbb','ccc','ddd');

foreach ($urls as $url){

echo "This Site url is $url!
";

}

?>

  显示结果:

  ?

1

2

3

4

This Site url is aaa

This Site url is bbb

This Site url is ccc

This Site url is ddd

  第二、while() 和 list(),each()配合使用。

  ?

1

2

3

4

5

6

$urls= array('aaa','bbb','ccc','ddd');

while(list($key,$val)= each($urls)) {

echo "This Site url is $val.
";

}

?>

  显示结果:

  ?

1

2

3

4

This Site url is aaa

This Site url is bbb

This Site url is ccc

This Site url is ddd

  第三、for()运用for遍历数组

  ?

1

2

3

4

5

6

7

$urls= array('aaa','bbb','ccc','ddd');

for ($i= 0;$i

$str= $urls[$i];

echo "This Site url is $str.
";

}

?>

  显示结果:

  ?

1

2

3

4

This Site url is aaa

This Site url is bbb

This Site url is ccc

This Site url is ddd

  有时候有人也在问这几种遍历数组的方法哪个更快捷些呢,下面做个简单的测试就明白了

  =========== 下面来测试三种遍历数组的速度 ===========

  一般情况下,遍历一个数组有三种方法,for、while、foreach。其中最简单方便的是foreach。下面先让我们来测试一下共同遍历一个有50000个下标的一维数组所耗的时间。

  ?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

$arr= array();

for($i= 0; $i

$arr[]= $i*rand(1000,9999);

}

function GetRunTime()

{

list($usec,$sec)=explode(" ",microtime());

return ((float)$usec+(float)$sec);

}

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

$time_start= GetRunTime();

for($i= 0; $i

$str= $arr[$i];

}

$time_end= GetRunTime();

$time_used= $time_end- $time_start;

echo 'Used time of for:'.round($time_used, 7).'(s)

';

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

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

$time_start= GetRunTime();

while(list($key, $val)= each($arr)){

$str= $val;

}

$time_end= GetRunTime();

$time_used= $time_end- $time_start;

echo 'Used time of while:'.round($time_used, 7).'(s)

';

unset($str, $key, $val, $time_start, $time_end, $time_used);

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

$time_start= GetRunTime();

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

$str= $val;

}

$time_end= GetRunTime();

$time_used= $time_end- $time_start;

echo 'Used time of foreach:'.round($time_used, 7).'(s)

';

?>

  测试结果:

  ?

1

2

3

Used time of for:0.0228429(s)

Used time of while:0.0544658(s)

Used time of foreach:0.0085628(s)

  经过反复多次测试,结果表明,对于遍历同样一个数组,foreach速度最快,最慢的则是while。从原理上来看,foreach是对数组副本进行操作(通过拷贝数组),而while则通过移动数组内部指标进行操作,一般逻辑下认为,while应该比foreach快(因为foreach在开始执行的时候首先把数组复制进去,而while直接移动内部指标。),但结果刚刚相反。原因应该是,foreach是PHP内部实现,而while是通用的循环结构。所以,在通常应用中foreach简单,而且效率高。在PHP5下,foreach还可以遍历类的属性。

Related labels:
php
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Recommendations
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template