Table of Contents
2. while()
3. for()
Home Backend Development PHP Tutorial PHP array traversal functions and their usage summary

PHP array traversal functions and their usage summary

Jun 22, 2017 pm 03:09 PM
php function array usage Traverse

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 />";
}
?>
Copy after login

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:

<?php
$colors= array('red','blue','green','yellow');
while(list($key,$val)= each($colors)) {
echo "Other list of $val.<br />";
}
?>
Copy after login

Display results:

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

3. for()

#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 />";
}
?>
Copy after login

##Display results:

the number is zero.

the number is one.
the number is two.

========= The following is an introduction to the function ===== =====

key()

mixed key(array input_array)

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

#example4

    <?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()函数
    }
    ?>
    Copy after login
Display results:

Can you name the capitals of these states?

Ohio
Towa
Arizona

reset()

mixed reset(array input_array)

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

<?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 />";
}
?>
Copy after login

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 an 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 Will cause an infinite loop.

For example, add $s1 = $colors; to the
while loop, and execute the code again, the browser will display the results endlessly.

each()

array each(array input_array)

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

<?php
$capitals= array("Ohio"=> "Columbus","Towa"=> "Des Moines","Arizona"=> "Phoenix");
$s1= each($capitals);
print_r($s1);
?>
Copy after login

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.

#example7

<?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 />";
?>
Copy after login

Display results:

apple

orange
apple
banana

=========== Let’s test the three speeds of traversing arrays ===========

Generally, there are three times to traverse an array. Methods, for, while, foreach. The simplest and most convenient of them is foreach. Let us 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

<?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 />';
?>
Copy after login

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!

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

Hot Article Tags

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

PHP 8.4 Installation and Upgrade guide for Ubuntu and Debian PHP 8.4 Installation and Upgrade guide for Ubuntu and Debian Dec 24, 2024 pm 04:42 PM

PHP 8.4 Installation and Upgrade guide for Ubuntu and Debian

CakePHP Date and Time CakePHP Date and Time Sep 10, 2024 pm 05:27 PM

CakePHP Date and Time

CakePHP Project Configuration CakePHP Project Configuration Sep 10, 2024 pm 05:25 PM

CakePHP Project Configuration

CakePHP File upload CakePHP File upload Sep 10, 2024 pm 05:27 PM

CakePHP File upload

CakePHP Routing CakePHP Routing Sep 10, 2024 pm 05:25 PM

CakePHP Routing

Discuss CakePHP Discuss CakePHP Sep 10, 2024 pm 05:28 PM

Discuss CakePHP

CakePHP Quick Guide CakePHP Quick Guide Sep 10, 2024 pm 05:27 PM

CakePHP Quick Guide

How To Set Up Visual Studio Code (VS Code) for PHP Development How To Set Up Visual Studio Code (VS Code) for PHP Development Dec 20, 2024 am 11:31 AM

How To Set Up Visual Studio Code (VS Code) for PHP Development

See all articles