array_merge.phpt 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762
  1. --TEST--
  2. Test array_merge() function
  3. --INI--
  4. precision=14
  5. --FILE--
  6. <?php
  7. /* Prototype: array array_merge(array $array1 [, array $array2 [, array $...]]);
  8. Description: Merge one or more arrays
  9. */
  10. echo "\n*** Testing array_merge() basic functionality ***";
  11. $begin_array = array(
  12. array(),
  13. array( 1 => "string"),
  14. array( "" => "string"),
  15. array( -2.44444 => 12),
  16. array( "a" => 1, "b" => -2.344, "b" => "string", "c" => NULL, "d" => -2.344),
  17. array( 4 => 1, 3 => -2.344, "3" => "string", "2" => NULL,1 => -2.344),
  18. array( NULL, 1.23 => "Hi", "string" => "hello",
  19. array("" => "World", "-2.34" => "a", "0" => "b"))
  20. );
  21. $end_array = array(
  22. array(),
  23. array( 1 => "string"),
  24. array( "" => "string"),
  25. array( -2.44444 => 12),
  26. array( "a" => 1, "b" => -2.344, "b" => "string", "c" => NULL, "d" => -2.344),
  27. array( 4 => 1, 3 => -2.344, "3" => "string", "2" => NULL, 1=> -2.344),
  28. array( NULL, 1.23 => "Hi", "string" => "hello",
  29. array("" => "World", "-2.34" => "a", "0" => "b"))
  30. );
  31. /* loop through to merge two arrays */
  32. $count_outer = 0;
  33. foreach($begin_array as $first) {
  34. echo "\n\n--- Iteration $count_outer ---";
  35. $count_inner = 0;
  36. foreach($end_array as $second) {
  37. echo "\n-- Inner iteration $count_inner of Iteration $count_outer --\n";
  38. $result = array_merge($first, $second);
  39. print_r($result);
  40. $count_inner++;
  41. }
  42. $count_outer++;
  43. }
  44. echo "\n*** Testing array_merge() with three or more arrays ***\n";
  45. var_dump( array_merge( $end_array[0],
  46. $end_array[5],
  47. $end_array[4],
  48. $end_array[6]
  49. )
  50. );
  51. var_dump( array_merge( $end_array[0],
  52. $end_array[5],
  53. array("array on fly"),
  54. array("nullarray" => array())
  55. )
  56. );
  57. echo "\n*** Testing single array argument ***\n";
  58. /* Empty array */
  59. var_dump(array_merge(array()));
  60. /* associative array with string keys, which will not be re-indexed */
  61. var_dump(array_merge($begin_array[4]));
  62. /* associative array with numeric keys, which will be re-indexed */
  63. var_dump(array_merge($begin_array[5]));
  64. /* associative array with mixed keys and sub-array as element */
  65. var_dump(array_merge($begin_array[6]));
  66. echo "\n*** Testing array_merge() with typecasting non-array to array ***\n";
  67. var_dump(array_merge($begin_array[4], (array)"type1", (array)10, (array)12.34));
  68. echo "\n*** Testing error conditions ***";
  69. /* Invalid arguments */
  70. var_dump(array_merge());
  71. var_dump(array_merge(100, 200));
  72. var_dump(array_merge($begin_array[0], $begin_array[1], 100));
  73. var_dump(array_merge($begin_array[0], $begin_array[1], $arr4));
  74. echo "Done\n";
  75. ?>
  76. --EXPECTF--
  77. *** Testing array_merge() basic functionality ***
  78. --- Iteration 0 ---
  79. -- Inner iteration 0 of Iteration 0 --
  80. Array
  81. (
  82. )
  83. -- Inner iteration 1 of Iteration 0 --
  84. Array
  85. (
  86. [0] => string
  87. )
  88. -- Inner iteration 2 of Iteration 0 --
  89. Array
  90. (
  91. [] => string
  92. )
  93. -- Inner iteration 3 of Iteration 0 --
  94. Array
  95. (
  96. [0] => 12
  97. )
  98. -- Inner iteration 4 of Iteration 0 --
  99. Array
  100. (
  101. [a] => 1
  102. [b] => string
  103. [c] =>
  104. [d] => -2.344
  105. )
  106. -- Inner iteration 5 of Iteration 0 --
  107. Array
  108. (
  109. [0] => 1
  110. [1] => string
  111. [2] =>
  112. [3] => -2.344
  113. )
  114. -- Inner iteration 6 of Iteration 0 --
  115. Array
  116. (
  117. [0] =>
  118. [1] => Hi
  119. [string] => hello
  120. [2] => Array
  121. (
  122. [] => World
  123. [-2.34] => a
  124. [0] => b
  125. )
  126. )
  127. --- Iteration 1 ---
  128. -- Inner iteration 0 of Iteration 1 --
  129. Array
  130. (
  131. [0] => string
  132. )
  133. -- Inner iteration 1 of Iteration 1 --
  134. Array
  135. (
  136. [0] => string
  137. [1] => string
  138. )
  139. -- Inner iteration 2 of Iteration 1 --
  140. Array
  141. (
  142. [0] => string
  143. [] => string
  144. )
  145. -- Inner iteration 3 of Iteration 1 --
  146. Array
  147. (
  148. [0] => string
  149. [1] => 12
  150. )
  151. -- Inner iteration 4 of Iteration 1 --
  152. Array
  153. (
  154. [0] => string
  155. [a] => 1
  156. [b] => string
  157. [c] =>
  158. [d] => -2.344
  159. )
  160. -- Inner iteration 5 of Iteration 1 --
  161. Array
  162. (
  163. [0] => string
  164. [1] => 1
  165. [2] => string
  166. [3] =>
  167. [4] => -2.344
  168. )
  169. -- Inner iteration 6 of Iteration 1 --
  170. Array
  171. (
  172. [0] => string
  173. [1] =>
  174. [2] => Hi
  175. [string] => hello
  176. [3] => Array
  177. (
  178. [] => World
  179. [-2.34] => a
  180. [0] => b
  181. )
  182. )
  183. --- Iteration 2 ---
  184. -- Inner iteration 0 of Iteration 2 --
  185. Array
  186. (
  187. [] => string
  188. )
  189. -- Inner iteration 1 of Iteration 2 --
  190. Array
  191. (
  192. [] => string
  193. [0] => string
  194. )
  195. -- Inner iteration 2 of Iteration 2 --
  196. Array
  197. (
  198. [] => string
  199. )
  200. -- Inner iteration 3 of Iteration 2 --
  201. Array
  202. (
  203. [] => string
  204. [0] => 12
  205. )
  206. -- Inner iteration 4 of Iteration 2 --
  207. Array
  208. (
  209. [] => string
  210. [a] => 1
  211. [b] => string
  212. [c] =>
  213. [d] => -2.344
  214. )
  215. -- Inner iteration 5 of Iteration 2 --
  216. Array
  217. (
  218. [] => string
  219. [0] => 1
  220. [1] => string
  221. [2] =>
  222. [3] => -2.344
  223. )
  224. -- Inner iteration 6 of Iteration 2 --
  225. Array
  226. (
  227. [] => string
  228. [0] =>
  229. [1] => Hi
  230. [string] => hello
  231. [2] => Array
  232. (
  233. [] => World
  234. [-2.34] => a
  235. [0] => b
  236. )
  237. )
  238. --- Iteration 3 ---
  239. -- Inner iteration 0 of Iteration 3 --
  240. Array
  241. (
  242. [0] => 12
  243. )
  244. -- Inner iteration 1 of Iteration 3 --
  245. Array
  246. (
  247. [0] => 12
  248. [1] => string
  249. )
  250. -- Inner iteration 2 of Iteration 3 --
  251. Array
  252. (
  253. [0] => 12
  254. [] => string
  255. )
  256. -- Inner iteration 3 of Iteration 3 --
  257. Array
  258. (
  259. [0] => 12
  260. [1] => 12
  261. )
  262. -- Inner iteration 4 of Iteration 3 --
  263. Array
  264. (
  265. [0] => 12
  266. [a] => 1
  267. [b] => string
  268. [c] =>
  269. [d] => -2.344
  270. )
  271. -- Inner iteration 5 of Iteration 3 --
  272. Array
  273. (
  274. [0] => 12
  275. [1] => 1
  276. [2] => string
  277. [3] =>
  278. [4] => -2.344
  279. )
  280. -- Inner iteration 6 of Iteration 3 --
  281. Array
  282. (
  283. [0] => 12
  284. [1] =>
  285. [2] => Hi
  286. [string] => hello
  287. [3] => Array
  288. (
  289. [] => World
  290. [-2.34] => a
  291. [0] => b
  292. )
  293. )
  294. --- Iteration 4 ---
  295. -- Inner iteration 0 of Iteration 4 --
  296. Array
  297. (
  298. [a] => 1
  299. [b] => string
  300. [c] =>
  301. [d] => -2.344
  302. )
  303. -- Inner iteration 1 of Iteration 4 --
  304. Array
  305. (
  306. [a] => 1
  307. [b] => string
  308. [c] =>
  309. [d] => -2.344
  310. [0] => string
  311. )
  312. -- Inner iteration 2 of Iteration 4 --
  313. Array
  314. (
  315. [a] => 1
  316. [b] => string
  317. [c] =>
  318. [d] => -2.344
  319. [] => string
  320. )
  321. -- Inner iteration 3 of Iteration 4 --
  322. Array
  323. (
  324. [a] => 1
  325. [b] => string
  326. [c] =>
  327. [d] => -2.344
  328. [0] => 12
  329. )
  330. -- Inner iteration 4 of Iteration 4 --
  331. Array
  332. (
  333. [a] => 1
  334. [b] => string
  335. [c] =>
  336. [d] => -2.344
  337. )
  338. -- Inner iteration 5 of Iteration 4 --
  339. Array
  340. (
  341. [a] => 1
  342. [b] => string
  343. [c] =>
  344. [d] => -2.344
  345. [0] => 1
  346. [1] => string
  347. [2] =>
  348. [3] => -2.344
  349. )
  350. -- Inner iteration 6 of Iteration 4 --
  351. Array
  352. (
  353. [a] => 1
  354. [b] => string
  355. [c] =>
  356. [d] => -2.344
  357. [0] =>
  358. [1] => Hi
  359. [string] => hello
  360. [2] => Array
  361. (
  362. [] => World
  363. [-2.34] => a
  364. [0] => b
  365. )
  366. )
  367. --- Iteration 5 ---
  368. -- Inner iteration 0 of Iteration 5 --
  369. Array
  370. (
  371. [0] => 1
  372. [1] => string
  373. [2] =>
  374. [3] => -2.344
  375. )
  376. -- Inner iteration 1 of Iteration 5 --
  377. Array
  378. (
  379. [0] => 1
  380. [1] => string
  381. [2] =>
  382. [3] => -2.344
  383. [4] => string
  384. )
  385. -- Inner iteration 2 of Iteration 5 --
  386. Array
  387. (
  388. [0] => 1
  389. [1] => string
  390. [2] =>
  391. [3] => -2.344
  392. [] => string
  393. )
  394. -- Inner iteration 3 of Iteration 5 --
  395. Array
  396. (
  397. [0] => 1
  398. [1] => string
  399. [2] =>
  400. [3] => -2.344
  401. [4] => 12
  402. )
  403. -- Inner iteration 4 of Iteration 5 --
  404. Array
  405. (
  406. [0] => 1
  407. [1] => string
  408. [2] =>
  409. [3] => -2.344
  410. [a] => 1
  411. [b] => string
  412. [c] =>
  413. [d] => -2.344
  414. )
  415. -- Inner iteration 5 of Iteration 5 --
  416. Array
  417. (
  418. [0] => 1
  419. [1] => string
  420. [2] =>
  421. [3] => -2.344
  422. [4] => 1
  423. [5] => string
  424. [6] =>
  425. [7] => -2.344
  426. )
  427. -- Inner iteration 6 of Iteration 5 --
  428. Array
  429. (
  430. [0] => 1
  431. [1] => string
  432. [2] =>
  433. [3] => -2.344
  434. [4] =>
  435. [5] => Hi
  436. [string] => hello
  437. [6] => Array
  438. (
  439. [] => World
  440. [-2.34] => a
  441. [0] => b
  442. )
  443. )
  444. --- Iteration 6 ---
  445. -- Inner iteration 0 of Iteration 6 --
  446. Array
  447. (
  448. [0] =>
  449. [1] => Hi
  450. [string] => hello
  451. [2] => Array
  452. (
  453. [] => World
  454. [-2.34] => a
  455. [0] => b
  456. )
  457. )
  458. -- Inner iteration 1 of Iteration 6 --
  459. Array
  460. (
  461. [0] =>
  462. [1] => Hi
  463. [string] => hello
  464. [2] => Array
  465. (
  466. [] => World
  467. [-2.34] => a
  468. [0] => b
  469. )
  470. [3] => string
  471. )
  472. -- Inner iteration 2 of Iteration 6 --
  473. Array
  474. (
  475. [0] =>
  476. [1] => Hi
  477. [string] => hello
  478. [2] => Array
  479. (
  480. [] => World
  481. [-2.34] => a
  482. [0] => b
  483. )
  484. [] => string
  485. )
  486. -- Inner iteration 3 of Iteration 6 --
  487. Array
  488. (
  489. [0] =>
  490. [1] => Hi
  491. [string] => hello
  492. [2] => Array
  493. (
  494. [] => World
  495. [-2.34] => a
  496. [0] => b
  497. )
  498. [3] => 12
  499. )
  500. -- Inner iteration 4 of Iteration 6 --
  501. Array
  502. (
  503. [0] =>
  504. [1] => Hi
  505. [string] => hello
  506. [2] => Array
  507. (
  508. [] => World
  509. [-2.34] => a
  510. [0] => b
  511. )
  512. [a] => 1
  513. [b] => string
  514. [c] =>
  515. [d] => -2.344
  516. )
  517. -- Inner iteration 5 of Iteration 6 --
  518. Array
  519. (
  520. [0] =>
  521. [1] => Hi
  522. [string] => hello
  523. [2] => Array
  524. (
  525. [] => World
  526. [-2.34] => a
  527. [0] => b
  528. )
  529. [3] => 1
  530. [4] => string
  531. [5] =>
  532. [6] => -2.344
  533. )
  534. -- Inner iteration 6 of Iteration 6 --
  535. Array
  536. (
  537. [0] =>
  538. [1] => Hi
  539. [string] => hello
  540. [2] => Array
  541. (
  542. [] => World
  543. [-2.34] => a
  544. [0] => b
  545. )
  546. [3] =>
  547. [4] => Hi
  548. [5] => Array
  549. (
  550. [] => World
  551. [-2.34] => a
  552. [0] => b
  553. )
  554. )
  555. *** Testing array_merge() with three or more arrays ***
  556. array(12) {
  557. [0]=>
  558. int(1)
  559. [1]=>
  560. string(6) "string"
  561. [2]=>
  562. NULL
  563. [3]=>
  564. float(-2.344)
  565. ["a"]=>
  566. int(1)
  567. ["b"]=>
  568. string(6) "string"
  569. ["c"]=>
  570. NULL
  571. ["d"]=>
  572. float(-2.344)
  573. [4]=>
  574. NULL
  575. [5]=>
  576. string(2) "Hi"
  577. ["string"]=>
  578. string(5) "hello"
  579. [6]=>
  580. array(3) {
  581. [""]=>
  582. string(5) "World"
  583. ["-2.34"]=>
  584. string(1) "a"
  585. [0]=>
  586. string(1) "b"
  587. }
  588. }
  589. array(6) {
  590. [0]=>
  591. int(1)
  592. [1]=>
  593. string(6) "string"
  594. [2]=>
  595. NULL
  596. [3]=>
  597. float(-2.344)
  598. [4]=>
  599. string(12) "array on fly"
  600. ["nullarray"]=>
  601. array(0) {
  602. }
  603. }
  604. *** Testing single array argument ***
  605. array(0) {
  606. }
  607. array(4) {
  608. ["a"]=>
  609. int(1)
  610. ["b"]=>
  611. string(6) "string"
  612. ["c"]=>
  613. NULL
  614. ["d"]=>
  615. float(-2.344)
  616. }
  617. array(4) {
  618. [0]=>
  619. int(1)
  620. [1]=>
  621. string(6) "string"
  622. [2]=>
  623. NULL
  624. [3]=>
  625. float(-2.344)
  626. }
  627. array(4) {
  628. [0]=>
  629. NULL
  630. [1]=>
  631. string(2) "Hi"
  632. ["string"]=>
  633. string(5) "hello"
  634. [2]=>
  635. array(3) {
  636. [""]=>
  637. string(5) "World"
  638. ["-2.34"]=>
  639. string(1) "a"
  640. [0]=>
  641. string(1) "b"
  642. }
  643. }
  644. *** Testing array_merge() with typecasting non-array to array ***
  645. array(7) {
  646. ["a"]=>
  647. int(1)
  648. ["b"]=>
  649. string(6) "string"
  650. ["c"]=>
  651. NULL
  652. ["d"]=>
  653. float(-2.344)
  654. [0]=>
  655. string(5) "type1"
  656. [1]=>
  657. int(10)
  658. [2]=>
  659. float(12.34)
  660. }
  661. *** Testing error conditions ***
  662. Warning: array_merge() expects at least 1 parameter, 0 given in %s on line %d
  663. NULL
  664. Warning: array_merge(): Argument #1 is not an array in %s on line %d
  665. NULL
  666. Warning: array_merge(): Argument #3 is not an array in %s on line %d
  667. NULL
  668. Notice: Undefined variable: arr4 in %s on line %d
  669. Warning: array_merge(): Argument #3 is not an array in %s on line %d
  670. NULL
  671. Done