Home > Backend Development > PHP Tutorial > PHP array traversal knowledge summary (including traversal methods, array pointer operation functions, array traversal speed test)_PHP tutorial

PHP array traversal knowledge summary (including traversal methods, array pointer operation functions, array traversal speed test)_PHP tutorial

WBOY
Release: 2016-07-13 10:26:39
Original
1223 people have browsed it

1. Introduction to 3 methods of array traversal

1. foreach()

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

#example1:

Copy code The code is as follows:

$colors= array('red','blue','green','yellow');
foreach ($colorsas$color){
echo "Do you like $color?
";
}
?>

Display results:

Do you like red?
Do you like blue?
Do you like green?
Do you like yellow?

2. while()

while() is usually used in conjunction with list() and each().

#example2:

Copy code The code is as follows:

$colors= array('red','blue','green','yellow');
while(list($key,$val)= each($colors)) {
echo "Other list of $val.
";
}
?>

Display results:

Other list of red.
Other list of blue.
Other list of green.
Other list of yellow.

3. for()

#example3:

Copy code The code is as follows:

$arr= array ("0"=> "zero","1"=> "one","2"=> "two");
for ($i= 0;$i< count($arr); $i++){
$str= $arr[$i];
echo "the number is $str.
";
}
?>

Display results:

the number is zero.
the number is one.
the number is two.

2. Introduction to array pointer operation functions

key()

mixed key(array input_array)

The key() function returns the key element in input_array at the current pointer position.

#example4

Copy code The code is as follows:

$capitals= array("Ohio"=> "Columbus","Towa"=> "Des Moines","Arizona"=> "Phoenix");
echo "

Can you name the capitals of these states?

";
while($key= key($capitals)) {
echo $key."
";
next($capitals);
//Each key() call does not advance the pointer. To do this, use the next() function
}
?>

Display results:

Can you name the capitals of these states?
Ohio
Towa
Arizona

reset()

mixed reset(array input_array)

The reset() function is used to set the input_array pointer back to the beginning of the array. This function is often used if you need to view or process the same array multiple times in a script. In addition, this function is often used at the end of sorting.

#example5 - Append code on #example1

Copy code The code is as follows:

$colors= array('red','blue','green','yellow');
foreach ($colorsas$color){
echo "Do you like $color?
";
}
reset($colors);
while(list($key,$val)= each($colors)) {
echo "$key=> $val
";
}
?>

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

Note: Assigning one array to another array will reset the original array pointer, so in the above example if we assign $colors to another variable inside the loop, it will cause an infinite loop.
For example, if $s1 = $colors; is added to the while loop and the code is executed again, the browser will display the results endlessly.

each()

array each(array input_array)

The each() function returns the current key/value pair of the input array and advances the pointer one position. The returned array contains four keys, key 0 and key contain the key name, and key 1 and value contain the corresponding data. If the pointer is at the end of the array before each() is executed, FALSE is returned.

#example6

Copy code The code is as follows:

$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 current pointer position of the target_array array. Unlike the next(), prev(), and end() functions, current() does not move the pointer.
The next() function returns the array value placed immediately next to the current array pointer.
The 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.


#example7

Copy code The code is as follows:

$fruits= array("apple","orange","banana");
$fruit= current($fruits); //return "apple"
echo $fruit."
";
$fruit= next($fruits); //return "orange"
echo $fruit."
";
$fruit= prev($fruits); //return "apple"
echo $fruit."
";
$fruit= end($fruits); //return "banana"
echo $fruit."
";
?>

Display results:

apple
orange
apple
banana

3. 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.

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


#example8

Copy code The code is as follows:

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

';
?>

Test results:

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 while is the slowest. In principle, 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.

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/824613.htmlTechArticle1. Introduction to 3 methods of array traversal 1. foreach() foreach() is a method used to traverse an array The simplest and most effective method for data. #example1: Copy the code. The code is as follows: php $colors= ar...
Related labels:
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