array_map_variation2.phpt 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213
  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. &array(4) {
  76. ["k1"]=>
  77. &string(2) "v1"
  78. ["k2"]=>
  79. string(2) "v2"
  80. [0]=>
  81. &string(2) "v1"
  82. [1]=>
  83. *RECURSION*
  84. }
  85. }
  86. }
  87. }
  88. string(2) "v1"
  89. string(2) "v2"
  90. string(2) "v1"
  91. array(4) {
  92. ["k1"]=>
  93. &string(2) "v1"
  94. ["k2"]=>
  95. string(2) "v2"
  96. [0]=>
  97. &string(2) "v1"
  98. [1]=>
  99. &array(4) {
  100. ["k1"]=>
  101. &string(2) "v1"
  102. ["k2"]=>
  103. string(2) "v2"
  104. [0]=>
  105. &string(2) "v1"
  106. [1]=>
  107. *RECURSION*
  108. }
  109. }
  110. array(4) {
  111. [0]=>
  112. array(1) {
  113. [0]=>
  114. &string(2) "v1"
  115. }
  116. [1]=>
  117. array(1) {
  118. [0]=>
  119. string(2) "v2"
  120. }
  121. [2]=>
  122. array(1) {
  123. [0]=>
  124. &string(2) "v1"
  125. }
  126. [3]=>
  127. array(1) {
  128. [0]=>
  129. &array(4) {
  130. ["k1"]=>
  131. &string(2) "v1"
  132. ["k2"]=>
  133. string(2) "v2"
  134. [0]=>
  135. &string(2) "v1"
  136. [1]=>
  137. *RECURSION*
  138. }
  139. }
  140. }
  141. array(4) {
  142. ["k1"]=>
  143. &string(2) "v1"
  144. ["k2"]=>
  145. string(2) "v2"
  146. [0]=>
  147. &string(2) "v1"
  148. [1]=>
  149. &array(4) {
  150. ["k1"]=>
  151. &string(2) "v1"
  152. ["k2"]=>
  153. string(2) "v2"
  154. [0]=>
  155. &string(2) "v1"
  156. [1]=>
  157. *RECURSION*
  158. }
  159. }
  160. array(4) {
  161. [0]=>
  162. array(2) {
  163. [0]=>
  164. &string(2) "v1"
  165. [1]=>
  166. &string(2) "v1"
  167. }
  168. [1]=>
  169. array(2) {
  170. [0]=>
  171. string(2) "v2"
  172. [1]=>
  173. string(2) "v2"
  174. }
  175. [2]=>
  176. array(2) {
  177. [0]=>
  178. &string(2) "v1"
  179. [1]=>
  180. &string(2) "v1"
  181. }
  182. [3]=>
  183. array(2) {
  184. [0]=>
  185. &array(4) {
  186. ["k1"]=>
  187. &string(2) "v1"
  188. ["k2"]=>
  189. string(2) "v2"
  190. [0]=>
  191. &string(2) "v1"
  192. [1]=>
  193. *RECURSION*
  194. }
  195. [1]=>
  196. &array(4) {
  197. ["k1"]=>
  198. &string(2) "v1"
  199. ["k2"]=>
  200. string(2) "v2"
  201. [0]=>
  202. &string(2) "v1"
  203. [1]=>
  204. *RECURSION*
  205. }
  206. }
  207. }
  208. Done