array_merge_variation4.phpt 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368
  1. --TEST--
  2. Test array_merge() function : usage variations - Diff. data types as array keys
  3. --FILE--
  4. <?php
  5. /* Prototype : array array_merge(array $arr1, array $arr2 [, array $...])
  6. * Description: Merges elements from passed arrays into one array
  7. * Source code: ext/standard/array.c
  8. */
  9. /*
  10. * Pass an array with different data types as keys to test how array_merge
  11. * adds it onto an existing array
  12. */
  13. echo "*** Testing array_merge() : usage variations ***\n";
  14. // Initialise function arguments not being substituted
  15. $arr = array ('one' => 1, 'two' => 2);
  16. //get an unset variable
  17. $unset_var = 10;
  18. unset ($unset_var);
  19. // heredoc string
  20. $heredoc = <<<EOT
  21. hello world
  22. EOT;
  23. // arrays with keys as different data types to be passed as $input
  24. $inputs = array(
  25. // int data
  26. /*1*/ 'int' => array(
  27. 0 => 'zero',
  28. 1 => 'one',
  29. 12345 => 'positive',
  30. -2345 => 'negative',
  31. ),
  32. // float data
  33. /*2*/ 'float' => array(
  34. 10.5 => 'positive',
  35. -10.5 => 'negative',
  36. .5 => 'half',
  37. ),
  38. /*3*/ 'extreme floats' => array(
  39. 12.3456789000e10 => 'large',
  40. 12.3456789000E-10 => 'small',
  41. ),
  42. // null data
  43. /*4*/ 'null uppercase' => array(
  44. NULL => 'null 1',
  45. ),
  46. /*5*/ 'null lowercase' => array(
  47. null => 'null 2',
  48. ),
  49. // boolean data
  50. /*6*/ 'bool lowercase' => array(
  51. true => 'lowert',
  52. false => 'lowerf',
  53. ),
  54. /*7*/ 'bool uppercase' => array(
  55. TRUE => 'uppert',
  56. FALSE => 'upperf',
  57. ),
  58. // empty data
  59. /*8*/ 'empty double quotes' => array(
  60. "" => 'emptyd',
  61. ),
  62. /*9*/ 'empty single quotes' => array(
  63. '' => 'emptys',
  64. ),
  65. // string data
  66. /*10*/ 'string' => array(
  67. "stringd" => 'stringd',
  68. 'strings' => 'strings',
  69. $heredoc => 'stringh',
  70. ),
  71. // undefined data
  72. /*11*/ 'undefined' => array(
  73. @$undefined_var => 'undefined',
  74. ),
  75. // unset data
  76. /*12*/ 'unset' => array(
  77. @$unset_var => 'unset',
  78. ),
  79. );
  80. // loop through each element of $inputs to check the behavior of array_merge
  81. $iterator = 1;
  82. foreach($inputs as $key => $input) {
  83. echo "\n-- Iteration $iterator: $key data --\n";
  84. var_dump( array_merge($input, $arr) );
  85. var_dump( array_merge($arr, $input) );
  86. $iterator++;
  87. };
  88. echo "Done";
  89. ?>
  90. --EXPECTF--
  91. *** Testing array_merge() : usage variations ***
  92. -- Iteration 1: int data --
  93. array(6) {
  94. [0]=>
  95. string(4) "zero"
  96. [1]=>
  97. string(3) "one"
  98. [2]=>
  99. string(8) "positive"
  100. [3]=>
  101. string(8) "negative"
  102. ["one"]=>
  103. int(1)
  104. ["two"]=>
  105. int(2)
  106. }
  107. array(6) {
  108. ["one"]=>
  109. int(1)
  110. ["two"]=>
  111. int(2)
  112. [0]=>
  113. string(4) "zero"
  114. [1]=>
  115. string(3) "one"
  116. [2]=>
  117. string(8) "positive"
  118. [3]=>
  119. string(8) "negative"
  120. }
  121. -- Iteration 2: float data --
  122. array(5) {
  123. [0]=>
  124. string(8) "positive"
  125. [1]=>
  126. string(8) "negative"
  127. [2]=>
  128. string(4) "half"
  129. ["one"]=>
  130. int(1)
  131. ["two"]=>
  132. int(2)
  133. }
  134. array(5) {
  135. ["one"]=>
  136. int(1)
  137. ["two"]=>
  138. int(2)
  139. [0]=>
  140. string(8) "positive"
  141. [1]=>
  142. string(8) "negative"
  143. [2]=>
  144. string(4) "half"
  145. }
  146. -- Iteration 3: extreme floats data --
  147. array(4) {
  148. [0]=>
  149. string(5) "large"
  150. [1]=>
  151. string(5) "small"
  152. ["one"]=>
  153. int(1)
  154. ["two"]=>
  155. int(2)
  156. }
  157. array(4) {
  158. ["one"]=>
  159. int(1)
  160. ["two"]=>
  161. int(2)
  162. [0]=>
  163. string(5) "large"
  164. [1]=>
  165. string(5) "small"
  166. }
  167. -- Iteration 4: null uppercase data --
  168. array(3) {
  169. [""]=>
  170. string(6) "null 1"
  171. ["one"]=>
  172. int(1)
  173. ["two"]=>
  174. int(2)
  175. }
  176. array(3) {
  177. ["one"]=>
  178. int(1)
  179. ["two"]=>
  180. int(2)
  181. [""]=>
  182. string(6) "null 1"
  183. }
  184. -- Iteration 5: null lowercase data --
  185. array(3) {
  186. [""]=>
  187. string(6) "null 2"
  188. ["one"]=>
  189. int(1)
  190. ["two"]=>
  191. int(2)
  192. }
  193. array(3) {
  194. ["one"]=>
  195. int(1)
  196. ["two"]=>
  197. int(2)
  198. [""]=>
  199. string(6) "null 2"
  200. }
  201. -- Iteration 6: bool lowercase data --
  202. array(4) {
  203. [0]=>
  204. string(6) "lowert"
  205. [1]=>
  206. string(6) "lowerf"
  207. ["one"]=>
  208. int(1)
  209. ["two"]=>
  210. int(2)
  211. }
  212. array(4) {
  213. ["one"]=>
  214. int(1)
  215. ["two"]=>
  216. int(2)
  217. [0]=>
  218. string(6) "lowert"
  219. [1]=>
  220. string(6) "lowerf"
  221. }
  222. -- Iteration 7: bool uppercase data --
  223. array(4) {
  224. [0]=>
  225. string(6) "uppert"
  226. [1]=>
  227. string(6) "upperf"
  228. ["one"]=>
  229. int(1)
  230. ["two"]=>
  231. int(2)
  232. }
  233. array(4) {
  234. ["one"]=>
  235. int(1)
  236. ["two"]=>
  237. int(2)
  238. [0]=>
  239. string(6) "uppert"
  240. [1]=>
  241. string(6) "upperf"
  242. }
  243. -- Iteration 8: empty double quotes data --
  244. array(3) {
  245. [""]=>
  246. string(6) "emptyd"
  247. ["one"]=>
  248. int(1)
  249. ["two"]=>
  250. int(2)
  251. }
  252. array(3) {
  253. ["one"]=>
  254. int(1)
  255. ["two"]=>
  256. int(2)
  257. [""]=>
  258. string(6) "emptyd"
  259. }
  260. -- Iteration 9: empty single quotes data --
  261. array(3) {
  262. [""]=>
  263. string(6) "emptys"
  264. ["one"]=>
  265. int(1)
  266. ["two"]=>
  267. int(2)
  268. }
  269. array(3) {
  270. ["one"]=>
  271. int(1)
  272. ["two"]=>
  273. int(2)
  274. [""]=>
  275. string(6) "emptys"
  276. }
  277. -- Iteration 10: string data --
  278. array(5) {
  279. ["stringd"]=>
  280. string(7) "stringd"
  281. ["strings"]=>
  282. string(7) "strings"
  283. ["hello world"]=>
  284. string(7) "stringh"
  285. ["one"]=>
  286. int(1)
  287. ["two"]=>
  288. int(2)
  289. }
  290. array(5) {
  291. ["one"]=>
  292. int(1)
  293. ["two"]=>
  294. int(2)
  295. ["stringd"]=>
  296. string(7) "stringd"
  297. ["strings"]=>
  298. string(7) "strings"
  299. ["hello world"]=>
  300. string(7) "stringh"
  301. }
  302. -- Iteration 11: undefined data --
  303. array(3) {
  304. [""]=>
  305. string(9) "undefined"
  306. ["one"]=>
  307. int(1)
  308. ["two"]=>
  309. int(2)
  310. }
  311. array(3) {
  312. ["one"]=>
  313. int(1)
  314. ["two"]=>
  315. int(2)
  316. [""]=>
  317. string(9) "undefined"
  318. }
  319. -- Iteration 12: unset data --
  320. array(3) {
  321. [""]=>
  322. string(5) "unset"
  323. ["one"]=>
  324. int(1)
  325. ["two"]=>
  326. int(2)
  327. }
  328. array(3) {
  329. ["one"]=>
  330. int(1)
  331. ["two"]=>
  332. int(2)
  333. [""]=>
  334. string(5) "unset"
  335. }
  336. Done