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