summaryrefslogtreecommitdiff
path: root/ext/standard/tests/array/key_variation4.phpt
diff options
context:
space:
mode:
Diffstat (limited to 'ext/standard/tests/array/key_variation4.phpt')
-rw-r--r--ext/standard/tests/array/key_variation4.phpt79
1 files changed, 79 insertions, 0 deletions
diff --git a/ext/standard/tests/array/key_variation4.phpt b/ext/standard/tests/array/key_variation4.phpt
new file mode 100644
index 0000000000..1aad797f8e
--- /dev/null
+++ b/ext/standard/tests/array/key_variation4.phpt
@@ -0,0 +1,79 @@
+--TEST--
+Test key() function : usage variations
+--FILE--
+<?php
+/* Prototype : mixed key(array $array_arg)
+ * Description: Return the key of the element currently pointed to by the internal array pointer
+ * Source code: ext/standard/array.c
+ */
+
+/*
+ * Test how key() behaves with muti-dimensional and recursive arrays
+ */
+
+echo "*** Testing key() : usage variations ***\n";
+
+echo "\n-- Two Dimensional Array --\n";
+$multi_array = array ('zero', array (1, 2, 3), 'two');
+echo "Initial Position: ";
+var_dump(key($multi_array));
+
+echo "Next Position: ";
+next($multi_array);
+var_dump(key($multi_array));
+
+echo "End Position: ";
+end($multi_array);
+var_dump(key($multi_array));
+
+echo "\n-- Access an Array Within an Array --\n";
+//accessing an array within an array
+echo "Initial Position: ";
+var_dump(key($multi_array[1]));
+
+echo "\n-- Recursive, Multidimensional Array --\n";
+//create a recursive array
+$multi_array[] = &$multi_array;
+
+//See where internal pointer is after adding more elements
+echo "Current Position: ";
+var_dump(key($multi_array));
+
+//see if internal pointer is in same position as referenced array
+var_dump(key($multi_array[3][3][3]));
+// see if internal pointer is in the same position from when accessing this inner array
+var_dump(key($multi_array[3][3][3][1]));
+?>
+===DONE===
+--EXPECTF--
+*** Testing key() : usage variations ***
+
+-- Two Dimensional Array --
+Initial Position: int(0)
+Next Position: int(1)
+End Position: int(2)
+
+-- Access an Array Within an Array --
+Initial Position: int(0)
+
+-- Recursive, Multidimensional Array --
+Current Position: int(2)
+int(2)
+int(0)
+===DONE===
+--UEXPECTF--
+*** Testing key() : usage variations ***
+
+-- Two Dimensional Array --
+Initial Position: int(0)
+Next Position: int(1)
+End Position: int(2)
+
+-- Access an Array Within an Array --
+Initial Position: int(0)
+
+-- Recursive, Multidimensional Array --
+Current Position: int(2)
+int(2)
+int(0)
+===DONE===