array_map_variation2.phpt 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203
  1. --TEST--
  2. Test array_map() function : usage variations - references
  3. --FILE--
  4. <?php
  5. /* Prototype : array array_map(mixed callback, array input1 [, array input2 ,...])
  6. * Description: Applies the callback to the elements in given arrays.
  7. * Source code: ext/standard/array.c
  8. */
  9. echo "*** Testing array_map() : references ***\n";
  10. $arr = array("k1" => "v1","k2"=>"v2");
  11. $arr[]=&$arr["k1"];
  12. $arr[]=&$arr;
  13. function cb1 ($a) {var_dump ($a);return array ($a);};
  14. function cb2 (&$a) {var_dump ($a);return array (&$a);};
  15. var_dump( array_map("cb1", $arr));
  16. var_dump( array_map("cb2", $arr,$arr));
  17. var_dump( array_map(null, $arr));
  18. var_dump( array_map(null, $arr, $arr));
  19. // break cycles
  20. $arr[0] = null;
  21. $arr[1] = null;
  22. echo "Done";
  23. ?>
  24. --EXPECT--
  25. *** Testing array_map() : references ***
  26. string(2) "v1"
  27. string(2) "v2"
  28. string(2) "v1"
  29. array(4) {
  30. ["k1"]=>
  31. &string(2) "v1"
  32. ["k2"]=>
  33. string(2) "v2"
  34. [0]=>
  35. &string(2) "v1"
  36. [1]=>
  37. &array(4) {
  38. ["k1"]=>
  39. &string(2) "v1"
  40. ["k2"]=>
  41. string(2) "v2"
  42. [0]=>
  43. &string(2) "v1"
  44. [1]=>
  45. *RECURSION*
  46. }
  47. }
  48. array(4) {
  49. ["k1"]=>
  50. array(1) {
  51. [0]=>
  52. string(2) "v1"
  53. }
  54. ["k2"]=>
  55. array(1) {
  56. [0]=>
  57. string(2) "v2"
  58. }
  59. [0]=>
  60. array(1) {
  61. [0]=>
  62. string(2) "v1"
  63. }
  64. [1]=>
  65. array(1) {
  66. [0]=>
  67. array(4) {
  68. ["k1"]=>
  69. &string(2) "v1"
  70. ["k2"]=>
  71. string(2) "v2"
  72. [0]=>
  73. &string(2) "v1"
  74. [1]=>
  75. *RECURSION*
  76. }
  77. }
  78. }
  79. string(2) "v1"
  80. string(2) "v2"
  81. string(2) "v1"
  82. array(4) {
  83. ["k1"]=>
  84. &string(2) "v1"
  85. ["k2"]=>
  86. string(2) "v2"
  87. [0]=>
  88. &string(2) "v1"
  89. [1]=>
  90. &array(4) {
  91. ["k1"]=>
  92. &string(2) "v1"
  93. ["k2"]=>
  94. string(2) "v2"
  95. [0]=>
  96. &string(2) "v1"
  97. [1]=>
  98. *RECURSION*
  99. }
  100. }
  101. array(4) {
  102. [0]=>
  103. array(1) {
  104. [0]=>
  105. &string(2) "v1"
  106. }
  107. [1]=>
  108. array(1) {
  109. [0]=>
  110. string(2) "v2"
  111. }
  112. [2]=>
  113. array(1) {
  114. [0]=>
  115. &string(2) "v1"
  116. }
  117. [3]=>
  118. array(1) {
  119. [0]=>
  120. &array(4) {
  121. ["k1"]=>
  122. &string(2) "v1"
  123. ["k2"]=>
  124. string(2) "v2"
  125. [0]=>
  126. &string(2) "v1"
  127. [1]=>
  128. *RECURSION*
  129. }
  130. }
  131. }
  132. array(4) {
  133. ["k1"]=>
  134. &string(2) "v1"
  135. ["k2"]=>
  136. string(2) "v2"
  137. [0]=>
  138. &string(2) "v1"
  139. [1]=>
  140. &array(4) {
  141. ["k1"]=>
  142. &string(2) "v1"
  143. ["k2"]=>
  144. string(2) "v2"
  145. [0]=>
  146. &string(2) "v1"
  147. [1]=>
  148. *RECURSION*
  149. }
  150. }
  151. array(4) {
  152. [0]=>
  153. array(2) {
  154. [0]=>
  155. &string(2) "v1"
  156. [1]=>
  157. &string(2) "v1"
  158. }
  159. [1]=>
  160. array(2) {
  161. [0]=>
  162. string(2) "v2"
  163. [1]=>
  164. string(2) "v2"
  165. }
  166. [2]=>
  167. array(2) {
  168. [0]=>
  169. &string(2) "v1"
  170. [1]=>
  171. &string(2) "v1"
  172. }
  173. [3]=>
  174. array(2) {
  175. [0]=>
  176. &array(4) {
  177. ["k1"]=>
  178. &string(2) "v1"
  179. ["k2"]=>
  180. string(2) "v2"
  181. [0]=>
  182. &string(2) "v1"
  183. [1]=>
  184. *RECURSION*
  185. }
  186. [1]=>
  187. &array(4) {
  188. ["k1"]=>
  189. &string(2) "v1"
  190. ["k2"]=>
  191. string(2) "v2"
  192. [0]=>
  193. &string(2) "v1"
  194. [1]=>
  195. *RECURSION*
  196. }
  197. }
  198. }
  199. Done