When using arrays, it is often necessary to traverse the array. It is often necessary to iterate through an array and get the individual keys or values (or get both keys and values), so not surprisingly, PHP provides some functions for this purpose. Many functions perform two tasks, not only obtain the key or value at the current pointer position, but also move the pointer to the next appropriate position.
Get the current array key key()
key() function returns the key at the current pointer position in input_array. It has the form:
mixed key(array array)
The following example outputs the key of the $fruits array by iterating through the array and moving the pointer:
$fruits = array("apple"=>"red", "banana"=>"yellow");
while ($key = key($fruits)) {
printf("%s
", $key);
next($fruits);
}
// apple
// banana
Note that the pointer will not move every time key() is called. For this purpose, the next() function needs to be used. The only function of this function is to complete the task of advancing the pointer.
Get the current array value current()
current() function returns the array value at the current pointer position in the array. Its form is as follows:
mixed current(array array)
Let’s modify the previous example. This time we want to get the array value:
$fruits = array("apple"=>"red", "banana"= >"yellow");
while ($fruit = current($fruits)) {
printf("%s
", $fruit);
next($fruits);
}
/ / red
// yellow
Get the current array key and value each()
each() function returns the current key/value pair of input_array and advances the pointer one position. Its form is as follows:
array each(array array)
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.
$fruits = array("apple", "banana", "orange", "pear");
print_r ( each($fruits) );
// Array ( [1] => apple [value] => apple [0] => 0 [key] => 0 )
each() is often used in combination with list() to traverse arrays. This example is similar to the previous example, but the entire array is output in a loop:
$fruits = array("apple", "banana", "orange", "pear");
reset($fruits);
while (list ($key, $val) = each($fruits))
{
echo "$key => $val
";
}
// 0 => apple
// 1 => ; banana
// 2 => orange
// 3 => pear
Because assigning an array to another array will reset the original array pointer, so in the above example, if we change it inside the loop Assigning $fruits to another variable will result in an infinite loop.
This completes array traversal.