1--TEST--
2Test current() function : usage variations - multi-dimensional arrays
3--FILE--
4<?php
5/* Prototype  : mixed current(array $array_arg)
6 * Description: Return the element currently pointed to by the internal array pointer
7 * Source code: ext/standard/array.c
8 * Alias to functions: pos
9 */
10
11/*
12 * Test how current() behaves with muti-dimensional and recursive arrays
13 */
14
15echo "*** Testing current() : usage variations ***\n";
16
17echo "\n-- Two Dimensional Array --\n";
18$multi_array = array ('zero', array (1, 2, 3), 'two');
19echo "Initial Position: ";
20var_dump(current($multi_array));
21
22echo "Next Position:    ";
23next($multi_array);
24var_dump(current($multi_array));
25
26echo "End Position:     ";
27end($multi_array);
28var_dump(current($multi_array));
29
30echo "\n-- Access an Array Within an Array --\n";
31//accessing an array within an array
32echo "Initial Position: ";
33var_dump(current($multi_array[1]));
34
35echo "\n-- Recursive, Multidimensional Array --\n";
36//create a recursive array
37$multi_array[] = &$multi_array;
38
39//See where internal pointer is after adding more elements
40echo "Current Position: ";
41var_dump(current($multi_array));
42
43//see if internal pointer is in same position as referenced array
44var_dump(current($multi_array[3][3][3]));
45// see if internal pointer is in the same position from when accessing this inner array
46var_dump(current($multi_array[3][3][3][1]));
47?>
48===DONE===
49--EXPECTF--
50*** Testing current() : usage variations ***
51
52-- Two Dimensional Array --
53Initial Position: string(4) "zero"
54Next Position:    array(3) {
55  [0]=>
56  int(1)
57  [1]=>
58  int(2)
59  [2]=>
60  int(3)
61}
62End Position:     string(3) "two"
63
64-- Access an Array Within an Array --
65Initial Position: int(1)
66
67-- Recursive, Multidimensional Array --
68Current Position: string(3) "two"
69string(3) "two"
70int(1)
71===DONE===
72