Three methods of traversing arrays in PHP and comparative analysis of efficiency_PHP Tutorial

WBOY
Release: 2016-07-13 10:06:49
Original
770 people have browsed it

Three methods and efficiency comparison of PHP traversing arrays

This article mainly introduces the three methods of PHP traversing arrays and their efficiency comparison. Examples analyze foreach, while and The comparison of the three methods of traversing arrays and related efficiencies has certain reference value. Friends in need can refer to it

This article analyzes three methods of traversing arrays in PHP and compares their efficiency. Share it with everyone for your reference. The specific analysis is as follows:

Today a friend asked me a question about how to traverse arrays in php, and I told her a few. By the way, I will write an article to summarize it. If the summary is not complete, please point it out

First, foreach()

foreach() is the simplest and most effective method for traversing data in an array.

?

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

5

6

1

2

3

4

This Site url is aaa

This Site url is bbb

This Site url is ccc

This Site url is ddd

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

foreach ($urls as $url){

echo "This Site url is $url!
";

}

1

2

3

4

5

6

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

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

echo "This Site url is $val.
";

}

?>

?>

Display results:

1

2

3

4

This Site url is aaa

This Site url is bbb

This Site url is ccc

This Site url is ddd

?
1

2

3

4

1

2

3

4

5

6

7

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

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

$str= $urls[$i];

echo "This Site url is $str.
";

}

?>

This Site url is aaa This Site url is bbb

This Site url is ccc

This Site url is ddd

1

2

3

4

This Site url is aaa

This Site url is bbb

This Site url is ccc

This Site url is ddd

Second, while() is used in conjunction with list() and 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.
"; } ?>
Display results: ?
1 2 3 4 This Site url is aaa This Site url is bbb This Site url is ccc This Site url is ddd
Third, for() uses for to traverse the array ?
1 2 3 4 5 6 7 <🎜>$urls= array('aaa','bbb','ccc','ddd');<🎜> <🎜>for ($i= 0;$i< count($urls); $i++){<🎜> <🎜>$str= $urls[$i];<🎜> <🎜>echo "This Site url is $str.
"; } ?>
Display results: ?
1 2 3 4 This Site url is aaa This Site url is bbb This Site url is ccc This Site url is ddd

Sometimes people also ask which of these methods of traversing an array is faster. Let’s do a simple test and you will understand

Let’s test three speeds of traversing arrays

Generally, there are three methods for traversing an array, for, while, and foreach. The simplest and most convenient of them is foreach. Let's first test the time it takes to traverse a one-dimensional array with 50,000 subscripts.

?

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< 50000; $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< count($arr); $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

4

5

6

1

2

3

Used time of for:0.0228429(s)

Used time of while:0.0544658(s)

Used time of foreach:0.0085628(s)

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

'; 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)

'; ?>
Test results: ?
1 2 3 Used time of for:0.0228429(s) Used time of while:0.0544658(s) Used time of foreach:0.0085628(s)

After repeated tests, the results show that for traversing the same array, foreach is the fastest, and the slowest is while. From a principle point of view, foreach operates on a copy of the array (by copying the array), while while operates by moving the internal index of the array. Generally speaking, it is believed that while should be faster than foreach (because foreach first moves the array when it starts to execute. Copied in, while while moves the internal pointer directly), but the result is just the opposite. The reason should be that foreach is an internal implementation of PHP, while while is a general loop structure. Therefore, in general applications, foreach is simple and efficient. Under PHP5, foreach can also traverse the attributes of a class.

I hope this article will be helpful to everyone’s PHP programming design.

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/957537.htmlTechArticleThree methods and efficiency comparison analysis of PHP traversing arrays. This article mainly introduces the three methods of PHP traversing arrays. And efficiency comparison, the example analyzes foreach, while and for three types of array traversal...
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 Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template