Home > Article > Backend Development > PHP array traversal functions and their usage summary
1. foreach()
foreach() is the simplest and most effective method for traversing the data in an array.
#example1:
<?php $colors= array('red','blue','green','yellow'); foreach ($colorsas$color){ echo "Do you like $color? <br />"; } ?>
Display results:
Do you like red?
Do you like blue?
Do you like green?
Do you like yellow?
while() is usually used in conjunction with list() and each().
#example2:
<?php $colors= array('red','blue','green','yellow'); while(list($key,$val)= each($colors)) { echo "Other list of $val.<br />"; } ?>
Display results:
Other list of red.
Other list of blue.
Other list of green.
Other list of yellow.
#example3:
<?php $arr= array ("0"=> "zero","1"=> "one","2"=> "two"); for ($i= 0;$i< count($arr); $i++){ $str= $arr[$i]; echo "the number is $str.<br />"; } ?>
##Display results:the number is zero.
the number is one.
the number is two.
<?php $capitals= array("Ohio"=> "Columbus","Towa"=> "Des Moines","Arizona"=> "Phoenix"); echo "<p>Can you name the capitals of these states?</p>"; while($key= key($capitals)) { echo $key."<br />"; next($capitals); //每个key()调用不会推进指针。为此要使用next()函数 } ?>
Ohio
Towa
Arizona
<?php $colors= array('red','blue','green','yellow'); foreach ($colorsas$color){ echo "Do you like $color? <br />"; } reset($colors); while(list($key,$val)= each($colors)) { echo "$key=> $val<br />"; } ?>
Display results: Do you like red?
Do you like blue?
Do you like green?
Do you like yellow?
0 => red
1 => blue
2 => green
3 => yellow
For example, add $s1 = $colors; to the
while loop, and execute the code again, the browser will display the results endlessly.
<?php $capitals= array("Ohio"=> "Columbus","Towa"=> "Des Moines","Arizona"=> "Phoenix"); $s1= each($capitals); print_r($s1); ?>
Display results: Array ( [1] => Columbus [value] => ; Columbus [0] => Ohio [key] => Ohio )current(), next(), prev(), end()mixed current(array target_array) The current() function returns the array value located at the target_
array arraycurrent pointer position. Unlike the next(), prev(), and end() functions, current() does not move the pointer. next() function returns the array value placed at the next position of the current array pointer.
prev() function returns the array value located at the previous position of the current pointer. If the pointer is originally located at the first position of the array, it returns FALSE.
The end() function moves the pointer to the last position of target_array and returns the last element.
<?php $fruits= array("apple","orange","banana"); $fruit= current($fruits); //return "apple" echo $fruit."<br />"; $fruit= next($fruits); //return "orange" echo $fruit."<br />"; $fruit= prev($fruits); //return "apple" echo $fruit."<br />"; $fruit= end($fruits); //return "banana" echo $fruit."<br />"; ?>
Display results: apple
orange
apple
banana
one-dimensional array with 50,000 subscripts.
Test environment:Intel Core Due2 2GHz
2GB 1067MHz DDR3
Mac OS X 10.5.7
Apache 2.0.59
MySQL 5.0.41
PHP 5.2 .6
<?php $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)<br /><br />'; 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)<br /><br />'; 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)<br /><br />'; ?>
Test result: 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.
The above is the detailed content of PHP array traversal functions and their usage summary. For more information, please follow other related articles on the PHP Chinese website!