summaryrefslogtreecommitdiff
path: root/ext/standard/tests/array/array_shift_variation5.phpt
diff options
context:
space:
mode:
Diffstat (limited to 'ext/standard/tests/array/array_shift_variation5.phpt')
-rw-r--r--ext/standard/tests/array/array_shift_variation5.phpt45
1 files changed, 45 insertions, 0 deletions
diff --git a/ext/standard/tests/array/array_shift_variation5.phpt b/ext/standard/tests/array/array_shift_variation5.phpt
new file mode 100644
index 000000000..2ac15da6b
--- /dev/null
+++ b/ext/standard/tests/array/array_shift_variation5.phpt
@@ -0,0 +1,45 @@
+--TEST--
+Test array_shift() function : usage variations - call recursively
+--FILE--
+<?php
+/* Prototype : mixed array_shift(array &$stack)
+ * Description: Pops an element off the beginning of the array
+ * Source code: ext/standard/array.c
+ */
+
+/*
+ * Use the result of one call to array_shift
+ * as the the $stack argument of another call to array_shift()
+ * When done in one statement causes strict error messages.
+ */
+
+echo "*** Testing array_shift() : usage variations ***\n";
+
+$stack = array ( array ( array ('zero', 'one', 'two'), 'un', 'deux'), 'eins', 'zwei');
+
+// not following strict standards
+echo "\n-- Incorrect Method: --\n";
+var_dump(array_shift(array_shift(array_shift($stack))));
+
+$stack = array (array( array('zero', 'one', 'two'), 'un', 'deux'), 'eins', 'zwei');
+// correct way of doing above:
+echo "\n-- Correct Method: --\n";
+$result1 = array_shift($stack);
+$result2 = array_shift($result1);
+var_dump(array_shift($result2));
+
+echo "Done";
+?>
+--EXPECTF--
+*** Testing array_shift() : usage variations ***
+
+-- Incorrect Method: --
+
+Strict Standards: Only variables should be passed by reference in %s on line %d
+
+Strict Standards: Only variables should be passed by reference in %s on line %d
+string(4) "zero"
+
+-- Correct Method: --
+string(4) "zero"
+Done \ No newline at end of file