constant_arrays.phpt 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. --TEST--
  2. Constant arrays
  3. --INI--
  4. zend.enable_gc=1
  5. --FILE--
  6. <?php
  7. define('FOOBAR', [1, 2, 3, ['foo' => 'bar']]);
  8. const FOO_BAR = [1, 2, 3, ['foo' => 'bar']];
  9. $x = FOOBAR;
  10. $x[0] = 7;
  11. var_dump($x, FOOBAR);
  12. $x = FOO_BAR;
  13. $x[0] = 7;
  14. var_dump($x, FOO_BAR);
  15. // ensure references are removed
  16. $x = 7;
  17. $y = [&$x];
  18. define('QUX', $y);
  19. $y[0] = 3;
  20. var_dump($x, $y, QUX);
  21. // objects are allowed in arrays
  22. define('ELEPHPANT', [new StdClass]);
  23. var_dump(ELEPHPANT);
  24. // ensure recursion doesn't crash
  25. $recursive = [];
  26. $recursive[0] = &$recursive;
  27. try {
  28. define('RECURSION', $recursive);
  29. } catch (ValueError $exception) {
  30. echo $exception->getMessage() . "\n";
  31. }
  32. ?>
  33. --EXPECT--
  34. array(4) {
  35. [0]=>
  36. int(7)
  37. [1]=>
  38. int(2)
  39. [2]=>
  40. int(3)
  41. [3]=>
  42. array(1) {
  43. ["foo"]=>
  44. string(3) "bar"
  45. }
  46. }
  47. array(4) {
  48. [0]=>
  49. int(1)
  50. [1]=>
  51. int(2)
  52. [2]=>
  53. int(3)
  54. [3]=>
  55. array(1) {
  56. ["foo"]=>
  57. string(3) "bar"
  58. }
  59. }
  60. array(4) {
  61. [0]=>
  62. int(7)
  63. [1]=>
  64. int(2)
  65. [2]=>
  66. int(3)
  67. [3]=>
  68. array(1) {
  69. ["foo"]=>
  70. string(3) "bar"
  71. }
  72. }
  73. array(4) {
  74. [0]=>
  75. int(1)
  76. [1]=>
  77. int(2)
  78. [2]=>
  79. int(3)
  80. [3]=>
  81. array(1) {
  82. ["foo"]=>
  83. string(3) "bar"
  84. }
  85. }
  86. int(3)
  87. array(1) {
  88. [0]=>
  89. &int(3)
  90. }
  91. array(1) {
  92. [0]=>
  93. int(7)
  94. }
  95. array(1) {
  96. [0]=>
  97. object(stdClass)#1 (0) {
  98. }
  99. }
  100. define(): Argument #2 ($value) cannot be a recursive array