Php maintains an internal pointer that points to one of the item in the array. By default, this pointer points to the first element in the array. Php provides functions to move the pointer in forward, reverse, to the end, to the first position.
Following table summarizes the functions.
Function |
Description |
current ( array|object $array ) : mixed |
Return current element of the array. If the internal pointer points beyond the end of the elements list or the array is empty, current() returns false. |
next ( array|object &$array ) : mixed |
It advances the internal array pointer one place forward before returning the element value. |
prev ( array|object &$array ) : mixed |
it rewinds the internal array pointer one place instead of advancing it. |
reset ( array|object &$array ) : mixed |
rewinds array's internal pointer to the first element and returns the value of the first array element. |
end ( array|object &$array ) : mixed |
advances array's internal pointer to the last element, and returns its value. |
Let’s see it with an example.
array_pointers_demo.php
#!/usr/bin/php
<?php
$arr1 = array(2, 3, 5, 7, 11);
echo "Elements in array are : \n";
print_r($arr1);
$current_element = current($arr1);
echo "\nCurrent element : $current_element\n";
echo "\nAdvancing internal pointer to next index\n";
$current_element = next($arr1);
echo "\nElement returned by next function: $current_element\n";
$current_element = current($arr1);
echo "Current element : $current_element\n";
echo "\nAdvancing current pointer to one step backward\n";
$current_element = prev($arr1);
echo "\nElement returned by prev function : $current_element\n";
$current_element = current($arr1);
echo "\nCurrent element : $current_element\n";
echo "\nMoving the internal pointer to the end\n";
$current_element = end($arr1);
echo "\nElement returned by end function : $current_element\n";
$current_element = current($arr1);
echo "\nCurrent element : $current_element\n";
?>
Output
$./array_pointers_demo.php
Elements in array are :
Array
(
[0] => 2
[1] => 3
[2] => 5
[3] => 7
[4] => 11
)
Current element : 2
Advancing internal pointer to next index
Element returned by next function: 3
Current element : 3
Advancing current pointer to one step backward
Element returned by prev function : 2
Current element : 2
Moving the internal pointer to the end
Element returned by end function : 11
Current element : 11
Using array pointers to traverse the array
Traversing in forward direction
while($current_ele = current($arr1)){
echo "current element : $current_ele\n";
next($arr1);
}
Traversing in backward direction
while($current_ele = current($arr1)){
echo "current element : $current_ele\n";
prev($arr1);
}
Find the below working application.
array_traversal_with_pointers.php
#!/usr/bin/php
<?php
$arr1 = array(2, 3, 5, 7, 11);
echo "Traversing in forward direction\n";
while($current_ele = current($arr1)){
echo "current element : $current_ele\n";
next($arr1);
}
echo "\n\nTraversing in backward direction\n";
end($arr1);
while($current_ele = current($arr1)){
echo "current element : $current_ele\n";
prev($arr1);
}
?>
Output
$./array_traversal_with_pointers.php
Traversing in forward direction
current element : 2
current element : 3
current element : 5
current element : 7
current element : 11
Traversing in backward direction
current element : 11
current element : 7
current element : 5
current element : 3
current element : 2
No comments:
Post a Comment