array_shift_variation6.phpt 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. --TEST--
  2. Test array_shift() function : usage variations - Referenced arrays
  3. --FILE--
  4. <?php
  5. /* Prototype : mixed array_shift(array &$stack)
  6. * Description: Pops an element off the beginning of the array
  7. * Source code: ext/standard/array.c
  8. */
  9. /*
  10. * Test how array_shift when passed:
  11. * 1. a variable that is referenced to an array
  12. * 2. an array that contains a referenced array
  13. */
  14. echo "*** Testing array_shift() : usage variations ***\n";
  15. echo "\n-- Variable is referenced array --\n";
  16. $original_array = array('zero', 'one', 'two');
  17. $copied_array = &$original_array;
  18. echo "Result: ";
  19. var_dump(array_shift($copied_array));
  20. echo "\n\$original_array:\n";
  21. var_dump($original_array);
  22. echo "\n\$copied_array:\n";
  23. var_dump($copied_array);
  24. echo "\n-- Element is referenced array --\n";
  25. $new_array = array (&$copied_array, 1, 'two');
  26. echo "Result: ";
  27. var_dump(array_shift($new_array[0]));
  28. echo "\n\$new_array:\n";
  29. var_dump($new_array);
  30. echo "\n\$copied_array\n";
  31. var_dump($copied_array);
  32. echo "Done";
  33. ?>
  34. --EXPECTF--
  35. *** Testing array_shift() : usage variations ***
  36. -- Variable is referenced array --
  37. Result: string(4) "zero"
  38. $original_array:
  39. array(2) {
  40. [0]=>
  41. string(3) "one"
  42. [1]=>
  43. string(3) "two"
  44. }
  45. $copied_array:
  46. array(2) {
  47. [0]=>
  48. string(3) "one"
  49. [1]=>
  50. string(3) "two"
  51. }
  52. -- Element is referenced array --
  53. Result: string(3) "one"
  54. $new_array:
  55. array(3) {
  56. [0]=>
  57. &array(1) {
  58. [0]=>
  59. string(3) "two"
  60. }
  61. [1]=>
  62. int(1)
  63. [2]=>
  64. string(3) "two"
  65. }
  66. $copied_array
  67. array(1) {
  68. [0]=>
  69. string(3) "two"
  70. }
  71. Done