basic.phpt 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. --TEST--
  2. Basic argument unpacking
  3. --FILE--
  4. <?php
  5. function test(...$args) {
  6. var_dump($args);
  7. }
  8. function test2($arg1, $arg2, $arg3 = null) {
  9. var_dump($arg1, $arg2, $arg3);
  10. }
  11. function getArray($array) {
  12. return $array;
  13. }
  14. function arrayGen($array) {
  15. foreach ($array as $element) {
  16. yield $element;
  17. }
  18. }
  19. $array = [1, 2, 3];
  20. test(...[]);
  21. test(...[1, 2, 3]);
  22. test(...$array);
  23. test(...getArray([1, 2, 3]));
  24. test(...arrayGen([]));
  25. test(...arrayGen([1, 2, 3]));
  26. test(1, ...[2, 3], ...[4, 5]);
  27. test(1, ...getArray([2, 3]), ...arrayGen([4, 5]));
  28. test2(...[1, 2]);
  29. test2(...[1, 2, 3]);
  30. test2(...[1], ...[], ...[], ...[2, 3], ...[4, 5]);
  31. ?>
  32. --EXPECT--
  33. array(0) {
  34. }
  35. array(3) {
  36. [0]=>
  37. int(1)
  38. [1]=>
  39. int(2)
  40. [2]=>
  41. int(3)
  42. }
  43. array(3) {
  44. [0]=>
  45. int(1)
  46. [1]=>
  47. int(2)
  48. [2]=>
  49. int(3)
  50. }
  51. array(3) {
  52. [0]=>
  53. int(1)
  54. [1]=>
  55. int(2)
  56. [2]=>
  57. int(3)
  58. }
  59. array(0) {
  60. }
  61. array(3) {
  62. [0]=>
  63. int(1)
  64. [1]=>
  65. int(2)
  66. [2]=>
  67. int(3)
  68. }
  69. array(5) {
  70. [0]=>
  71. int(1)
  72. [1]=>
  73. int(2)
  74. [2]=>
  75. int(3)
  76. [3]=>
  77. int(4)
  78. [4]=>
  79. int(5)
  80. }
  81. array(5) {
  82. [0]=>
  83. int(1)
  84. [1]=>
  85. int(2)
  86. [2]=>
  87. int(3)
  88. [3]=>
  89. int(4)
  90. [4]=>
  91. int(5)
  92. }
  93. int(1)
  94. int(2)
  95. NULL
  96. int(1)
  97. int(2)
  98. int(3)
  99. int(1)
  100. int(2)
  101. int(3)