array_replace.phpt 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. --TEST--
  2. Test array_replace and array_replace_recursive
  3. --FILE--
  4. <?php
  5. $array1 = array(
  6. 0 => 'dontclobber',
  7. '1' => 'unclobbered',
  8. 'test2' => 0.0,
  9. 'test3' => array(
  10. 'testarray2' => true,
  11. 1 => array(
  12. 'testsubarray1' => 'dontclobber2',
  13. 'testsubarray2' => 'dontclobber3',
  14. ),
  15. ),
  16. );
  17. $array2 = array(
  18. 1 => 'clobbered',
  19. 'test3' => array(
  20. 'testarray2' => false,
  21. ),
  22. 'test4' => array(
  23. 'clobbered3' => array(0, 1, 2),
  24. ),
  25. );
  26. $array3 = array(array(array(array())));
  27. $array4 = array();
  28. $array4[] = &$array4;
  29. echo " -- Testing array_replace() --\n";
  30. $data = array_replace($array1, $array2);
  31. var_dump($data);
  32. echo " -- Testing array_replace_recursive() --\n";
  33. $data = array_replace_recursive($array1, $array2);
  34. var_dump($data);
  35. echo " -- Testing array_replace_recursive() w/ endless recusrsion --\n";
  36. try {
  37. $data = array_replace_recursive($array3, $array4);
  38. var_dump($data);
  39. } catch (\Error $e) {
  40. echo $e->getMessage() . "\n";
  41. }
  42. ?>
  43. --EXPECT--
  44. -- Testing array_replace() --
  45. array(5) {
  46. [0]=>
  47. string(11) "dontclobber"
  48. [1]=>
  49. string(9) "clobbered"
  50. ["test2"]=>
  51. float(0)
  52. ["test3"]=>
  53. array(1) {
  54. ["testarray2"]=>
  55. bool(false)
  56. }
  57. ["test4"]=>
  58. array(1) {
  59. ["clobbered3"]=>
  60. array(3) {
  61. [0]=>
  62. int(0)
  63. [1]=>
  64. int(1)
  65. [2]=>
  66. int(2)
  67. }
  68. }
  69. }
  70. -- Testing array_replace_recursive() --
  71. array(5) {
  72. [0]=>
  73. string(11) "dontclobber"
  74. [1]=>
  75. string(9) "clobbered"
  76. ["test2"]=>
  77. float(0)
  78. ["test3"]=>
  79. array(2) {
  80. ["testarray2"]=>
  81. bool(false)
  82. [1]=>
  83. array(2) {
  84. ["testsubarray1"]=>
  85. string(12) "dontclobber2"
  86. ["testsubarray2"]=>
  87. string(12) "dontclobber3"
  88. }
  89. }
  90. ["test4"]=>
  91. array(1) {
  92. ["clobbered3"]=>
  93. array(3) {
  94. [0]=>
  95. int(0)
  96. [1]=>
  97. int(1)
  98. [2]=>
  99. int(2)
  100. }
  101. }
  102. }
  103. -- Testing array_replace_recursive() w/ endless recusrsion --
  104. Recursion detected