array_splice_variation3.phpt 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856
  1. --TEST--
  2. Test array_splice() function : usage variations - lengths and offsets
  3. --FILE--
  4. <?php
  5. /*
  6. * proto array array_splice(array input, int offset [, int length [, array replacement]])
  7. * Function is implemented in ext/standard/array.c
  8. */
  9. echo "*** array_splice() function : usage variations - lengths and offsets\n";
  10. function test_splice ($offset, $length)
  11. {
  12. echo " - No replacement\n";
  13. $input_array=array(0,1,2,3,4,5);
  14. var_dump (array_splice ($input_array,$offset,$length));
  15. var_dump ($input_array);
  16. echo " - With replacement\n";
  17. $input_array=array(0,1,2,3,4,5);
  18. var_dump (array_splice ($input_array,$offset,$length,array ("A","B","C")));
  19. var_dump ($input_array);
  20. }
  21. echo "absolute offset - absolute length - cut from beginning\n";
  22. test_splice (0,2);
  23. echo "absolute offset - absolute length - cut from middle\n";
  24. test_splice (2,2);
  25. echo "absolute offset - absolute length - cut from end\n";
  26. test_splice (4,2);
  27. echo "absolute offset - absolute length - attempt to cut past end\n";
  28. test_splice (4,4);
  29. echo "absolute offset - absolute length - cut everything\n";
  30. test_splice (0,7);
  31. echo "absolute offset - absolute length - cut nothing\n";
  32. test_splice (3,0);
  33. echo "absolute offset - relative length - cut from beginning\n";
  34. test_splice (0,-4);
  35. echo "absolute offset - relative length - cut from middle\n";
  36. test_splice (2,-2);
  37. echo "absolute offset - relative length - attempt to cut form before beginning \n";
  38. test_splice (0,-7);
  39. echo "absolute offset - relative length - cut nothing\n";
  40. test_splice (2,-7);
  41. echo "relative offset - absolute length - cut from beginning\n";
  42. test_splice (-6,2);
  43. echo "relative offset - absolute length - cut from middle\n";
  44. test_splice (-4,2);
  45. echo "relative offset - absolute length - cut from end\n";
  46. test_splice (-2,2);
  47. echo "relative offset - absolute length - attempt to cut past end\n";
  48. test_splice (-2,4);
  49. echo "relative offset - absolute length - cut everything\n";
  50. test_splice (-6,6);
  51. echo "relative offset - absolute length - cut nothing\n";
  52. test_splice (-6,0);
  53. echo "relative offset - relative length - cut from beginning\n";
  54. test_splice (-6,-4);
  55. echo "relative offset - relative length - cut from middle\n";
  56. test_splice (-4,-2);
  57. echo "relative offset - relative length - cut nothing\n";
  58. test_splice (-4,-7);
  59. echo "Done\n";
  60. ?>
  61. --EXPECT--
  62. *** array_splice() function : usage variations - lengths and offsets
  63. absolute offset - absolute length - cut from beginning
  64. - No replacement
  65. array(2) {
  66. [0]=>
  67. int(0)
  68. [1]=>
  69. int(1)
  70. }
  71. array(4) {
  72. [0]=>
  73. int(2)
  74. [1]=>
  75. int(3)
  76. [2]=>
  77. int(4)
  78. [3]=>
  79. int(5)
  80. }
  81. - With replacement
  82. array(2) {
  83. [0]=>
  84. int(0)
  85. [1]=>
  86. int(1)
  87. }
  88. array(7) {
  89. [0]=>
  90. string(1) "A"
  91. [1]=>
  92. string(1) "B"
  93. [2]=>
  94. string(1) "C"
  95. [3]=>
  96. int(2)
  97. [4]=>
  98. int(3)
  99. [5]=>
  100. int(4)
  101. [6]=>
  102. int(5)
  103. }
  104. absolute offset - absolute length - cut from middle
  105. - No replacement
  106. array(2) {
  107. [0]=>
  108. int(2)
  109. [1]=>
  110. int(3)
  111. }
  112. array(4) {
  113. [0]=>
  114. int(0)
  115. [1]=>
  116. int(1)
  117. [2]=>
  118. int(4)
  119. [3]=>
  120. int(5)
  121. }
  122. - With replacement
  123. array(2) {
  124. [0]=>
  125. int(2)
  126. [1]=>
  127. int(3)
  128. }
  129. array(7) {
  130. [0]=>
  131. int(0)
  132. [1]=>
  133. int(1)
  134. [2]=>
  135. string(1) "A"
  136. [3]=>
  137. string(1) "B"
  138. [4]=>
  139. string(1) "C"
  140. [5]=>
  141. int(4)
  142. [6]=>
  143. int(5)
  144. }
  145. absolute offset - absolute length - cut from end
  146. - No replacement
  147. array(2) {
  148. [0]=>
  149. int(4)
  150. [1]=>
  151. int(5)
  152. }
  153. array(4) {
  154. [0]=>
  155. int(0)
  156. [1]=>
  157. int(1)
  158. [2]=>
  159. int(2)
  160. [3]=>
  161. int(3)
  162. }
  163. - With replacement
  164. array(2) {
  165. [0]=>
  166. int(4)
  167. [1]=>
  168. int(5)
  169. }
  170. array(7) {
  171. [0]=>
  172. int(0)
  173. [1]=>
  174. int(1)
  175. [2]=>
  176. int(2)
  177. [3]=>
  178. int(3)
  179. [4]=>
  180. string(1) "A"
  181. [5]=>
  182. string(1) "B"
  183. [6]=>
  184. string(1) "C"
  185. }
  186. absolute offset - absolute length - attempt to cut past end
  187. - No replacement
  188. array(2) {
  189. [0]=>
  190. int(4)
  191. [1]=>
  192. int(5)
  193. }
  194. array(4) {
  195. [0]=>
  196. int(0)
  197. [1]=>
  198. int(1)
  199. [2]=>
  200. int(2)
  201. [3]=>
  202. int(3)
  203. }
  204. - With replacement
  205. array(2) {
  206. [0]=>
  207. int(4)
  208. [1]=>
  209. int(5)
  210. }
  211. array(7) {
  212. [0]=>
  213. int(0)
  214. [1]=>
  215. int(1)
  216. [2]=>
  217. int(2)
  218. [3]=>
  219. int(3)
  220. [4]=>
  221. string(1) "A"
  222. [5]=>
  223. string(1) "B"
  224. [6]=>
  225. string(1) "C"
  226. }
  227. absolute offset - absolute length - cut everything
  228. - No replacement
  229. array(6) {
  230. [0]=>
  231. int(0)
  232. [1]=>
  233. int(1)
  234. [2]=>
  235. int(2)
  236. [3]=>
  237. int(3)
  238. [4]=>
  239. int(4)
  240. [5]=>
  241. int(5)
  242. }
  243. array(0) {
  244. }
  245. - With replacement
  246. array(6) {
  247. [0]=>
  248. int(0)
  249. [1]=>
  250. int(1)
  251. [2]=>
  252. int(2)
  253. [3]=>
  254. int(3)
  255. [4]=>
  256. int(4)
  257. [5]=>
  258. int(5)
  259. }
  260. array(3) {
  261. [0]=>
  262. string(1) "A"
  263. [1]=>
  264. string(1) "B"
  265. [2]=>
  266. string(1) "C"
  267. }
  268. absolute offset - absolute length - cut nothing
  269. - No replacement
  270. array(0) {
  271. }
  272. array(6) {
  273. [0]=>
  274. int(0)
  275. [1]=>
  276. int(1)
  277. [2]=>
  278. int(2)
  279. [3]=>
  280. int(3)
  281. [4]=>
  282. int(4)
  283. [5]=>
  284. int(5)
  285. }
  286. - With replacement
  287. array(0) {
  288. }
  289. array(9) {
  290. [0]=>
  291. int(0)
  292. [1]=>
  293. int(1)
  294. [2]=>
  295. int(2)
  296. [3]=>
  297. string(1) "A"
  298. [4]=>
  299. string(1) "B"
  300. [5]=>
  301. string(1) "C"
  302. [6]=>
  303. int(3)
  304. [7]=>
  305. int(4)
  306. [8]=>
  307. int(5)
  308. }
  309. absolute offset - relative length - cut from beginning
  310. - No replacement
  311. array(2) {
  312. [0]=>
  313. int(0)
  314. [1]=>
  315. int(1)
  316. }
  317. array(4) {
  318. [0]=>
  319. int(2)
  320. [1]=>
  321. int(3)
  322. [2]=>
  323. int(4)
  324. [3]=>
  325. int(5)
  326. }
  327. - With replacement
  328. array(2) {
  329. [0]=>
  330. int(0)
  331. [1]=>
  332. int(1)
  333. }
  334. array(7) {
  335. [0]=>
  336. string(1) "A"
  337. [1]=>
  338. string(1) "B"
  339. [2]=>
  340. string(1) "C"
  341. [3]=>
  342. int(2)
  343. [4]=>
  344. int(3)
  345. [5]=>
  346. int(4)
  347. [6]=>
  348. int(5)
  349. }
  350. absolute offset - relative length - cut from middle
  351. - No replacement
  352. array(2) {
  353. [0]=>
  354. int(2)
  355. [1]=>
  356. int(3)
  357. }
  358. array(4) {
  359. [0]=>
  360. int(0)
  361. [1]=>
  362. int(1)
  363. [2]=>
  364. int(4)
  365. [3]=>
  366. int(5)
  367. }
  368. - With replacement
  369. array(2) {
  370. [0]=>
  371. int(2)
  372. [1]=>
  373. int(3)
  374. }
  375. array(7) {
  376. [0]=>
  377. int(0)
  378. [1]=>
  379. int(1)
  380. [2]=>
  381. string(1) "A"
  382. [3]=>
  383. string(1) "B"
  384. [4]=>
  385. string(1) "C"
  386. [5]=>
  387. int(4)
  388. [6]=>
  389. int(5)
  390. }
  391. absolute offset - relative length - attempt to cut form before beginning
  392. - No replacement
  393. array(0) {
  394. }
  395. array(6) {
  396. [0]=>
  397. int(0)
  398. [1]=>
  399. int(1)
  400. [2]=>
  401. int(2)
  402. [3]=>
  403. int(3)
  404. [4]=>
  405. int(4)
  406. [5]=>
  407. int(5)
  408. }
  409. - With replacement
  410. array(0) {
  411. }
  412. array(9) {
  413. [0]=>
  414. string(1) "A"
  415. [1]=>
  416. string(1) "B"
  417. [2]=>
  418. string(1) "C"
  419. [3]=>
  420. int(0)
  421. [4]=>
  422. int(1)
  423. [5]=>
  424. int(2)
  425. [6]=>
  426. int(3)
  427. [7]=>
  428. int(4)
  429. [8]=>
  430. int(5)
  431. }
  432. absolute offset - relative length - cut nothing
  433. - No replacement
  434. array(0) {
  435. }
  436. array(6) {
  437. [0]=>
  438. int(0)
  439. [1]=>
  440. int(1)
  441. [2]=>
  442. int(2)
  443. [3]=>
  444. int(3)
  445. [4]=>
  446. int(4)
  447. [5]=>
  448. int(5)
  449. }
  450. - With replacement
  451. array(0) {
  452. }
  453. array(9) {
  454. [0]=>
  455. int(0)
  456. [1]=>
  457. int(1)
  458. [2]=>
  459. string(1) "A"
  460. [3]=>
  461. string(1) "B"
  462. [4]=>
  463. string(1) "C"
  464. [5]=>
  465. int(2)
  466. [6]=>
  467. int(3)
  468. [7]=>
  469. int(4)
  470. [8]=>
  471. int(5)
  472. }
  473. relative offset - absolute length - cut from beginning
  474. - No replacement
  475. array(2) {
  476. [0]=>
  477. int(0)
  478. [1]=>
  479. int(1)
  480. }
  481. array(4) {
  482. [0]=>
  483. int(2)
  484. [1]=>
  485. int(3)
  486. [2]=>
  487. int(4)
  488. [3]=>
  489. int(5)
  490. }
  491. - With replacement
  492. array(2) {
  493. [0]=>
  494. int(0)
  495. [1]=>
  496. int(1)
  497. }
  498. array(7) {
  499. [0]=>
  500. string(1) "A"
  501. [1]=>
  502. string(1) "B"
  503. [2]=>
  504. string(1) "C"
  505. [3]=>
  506. int(2)
  507. [4]=>
  508. int(3)
  509. [5]=>
  510. int(4)
  511. [6]=>
  512. int(5)
  513. }
  514. relative offset - absolute length - cut from middle
  515. - No replacement
  516. array(2) {
  517. [0]=>
  518. int(2)
  519. [1]=>
  520. int(3)
  521. }
  522. array(4) {
  523. [0]=>
  524. int(0)
  525. [1]=>
  526. int(1)
  527. [2]=>
  528. int(4)
  529. [3]=>
  530. int(5)
  531. }
  532. - With replacement
  533. array(2) {
  534. [0]=>
  535. int(2)
  536. [1]=>
  537. int(3)
  538. }
  539. array(7) {
  540. [0]=>
  541. int(0)
  542. [1]=>
  543. int(1)
  544. [2]=>
  545. string(1) "A"
  546. [3]=>
  547. string(1) "B"
  548. [4]=>
  549. string(1) "C"
  550. [5]=>
  551. int(4)
  552. [6]=>
  553. int(5)
  554. }
  555. relative offset - absolute length - cut from end
  556. - No replacement
  557. array(2) {
  558. [0]=>
  559. int(4)
  560. [1]=>
  561. int(5)
  562. }
  563. array(4) {
  564. [0]=>
  565. int(0)
  566. [1]=>
  567. int(1)
  568. [2]=>
  569. int(2)
  570. [3]=>
  571. int(3)
  572. }
  573. - With replacement
  574. array(2) {
  575. [0]=>
  576. int(4)
  577. [1]=>
  578. int(5)
  579. }
  580. array(7) {
  581. [0]=>
  582. int(0)
  583. [1]=>
  584. int(1)
  585. [2]=>
  586. int(2)
  587. [3]=>
  588. int(3)
  589. [4]=>
  590. string(1) "A"
  591. [5]=>
  592. string(1) "B"
  593. [6]=>
  594. string(1) "C"
  595. }
  596. relative offset - absolute length - attempt to cut past end
  597. - No replacement
  598. array(2) {
  599. [0]=>
  600. int(4)
  601. [1]=>
  602. int(5)
  603. }
  604. array(4) {
  605. [0]=>
  606. int(0)
  607. [1]=>
  608. int(1)
  609. [2]=>
  610. int(2)
  611. [3]=>
  612. int(3)
  613. }
  614. - With replacement
  615. array(2) {
  616. [0]=>
  617. int(4)
  618. [1]=>
  619. int(5)
  620. }
  621. array(7) {
  622. [0]=>
  623. int(0)
  624. [1]=>
  625. int(1)
  626. [2]=>
  627. int(2)
  628. [3]=>
  629. int(3)
  630. [4]=>
  631. string(1) "A"
  632. [5]=>
  633. string(1) "B"
  634. [6]=>
  635. string(1) "C"
  636. }
  637. relative offset - absolute length - cut everything
  638. - No replacement
  639. array(6) {
  640. [0]=>
  641. int(0)
  642. [1]=>
  643. int(1)
  644. [2]=>
  645. int(2)
  646. [3]=>
  647. int(3)
  648. [4]=>
  649. int(4)
  650. [5]=>
  651. int(5)
  652. }
  653. array(0) {
  654. }
  655. - With replacement
  656. array(6) {
  657. [0]=>
  658. int(0)
  659. [1]=>
  660. int(1)
  661. [2]=>
  662. int(2)
  663. [3]=>
  664. int(3)
  665. [4]=>
  666. int(4)
  667. [5]=>
  668. int(5)
  669. }
  670. array(3) {
  671. [0]=>
  672. string(1) "A"
  673. [1]=>
  674. string(1) "B"
  675. [2]=>
  676. string(1) "C"
  677. }
  678. relative offset - absolute length - cut nothing
  679. - No replacement
  680. array(0) {
  681. }
  682. array(6) {
  683. [0]=>
  684. int(0)
  685. [1]=>
  686. int(1)
  687. [2]=>
  688. int(2)
  689. [3]=>
  690. int(3)
  691. [4]=>
  692. int(4)
  693. [5]=>
  694. int(5)
  695. }
  696. - With replacement
  697. array(0) {
  698. }
  699. array(9) {
  700. [0]=>
  701. string(1) "A"
  702. [1]=>
  703. string(1) "B"
  704. [2]=>
  705. string(1) "C"
  706. [3]=>
  707. int(0)
  708. [4]=>
  709. int(1)
  710. [5]=>
  711. int(2)
  712. [6]=>
  713. int(3)
  714. [7]=>
  715. int(4)
  716. [8]=>
  717. int(5)
  718. }
  719. relative offset - relative length - cut from beginning
  720. - No replacement
  721. array(2) {
  722. [0]=>
  723. int(0)
  724. [1]=>
  725. int(1)
  726. }
  727. array(4) {
  728. [0]=>
  729. int(2)
  730. [1]=>
  731. int(3)
  732. [2]=>
  733. int(4)
  734. [3]=>
  735. int(5)
  736. }
  737. - With replacement
  738. array(2) {
  739. [0]=>
  740. int(0)
  741. [1]=>
  742. int(1)
  743. }
  744. array(7) {
  745. [0]=>
  746. string(1) "A"
  747. [1]=>
  748. string(1) "B"
  749. [2]=>
  750. string(1) "C"
  751. [3]=>
  752. int(2)
  753. [4]=>
  754. int(3)
  755. [5]=>
  756. int(4)
  757. [6]=>
  758. int(5)
  759. }
  760. relative offset - relative length - cut from middle
  761. - No replacement
  762. array(2) {
  763. [0]=>
  764. int(2)
  765. [1]=>
  766. int(3)
  767. }
  768. array(4) {
  769. [0]=>
  770. int(0)
  771. [1]=>
  772. int(1)
  773. [2]=>
  774. int(4)
  775. [3]=>
  776. int(5)
  777. }
  778. - With replacement
  779. array(2) {
  780. [0]=>
  781. int(2)
  782. [1]=>
  783. int(3)
  784. }
  785. array(7) {
  786. [0]=>
  787. int(0)
  788. [1]=>
  789. int(1)
  790. [2]=>
  791. string(1) "A"
  792. [3]=>
  793. string(1) "B"
  794. [4]=>
  795. string(1) "C"
  796. [5]=>
  797. int(4)
  798. [6]=>
  799. int(5)
  800. }
  801. relative offset - relative length - cut nothing
  802. - No replacement
  803. array(0) {
  804. }
  805. array(6) {
  806. [0]=>
  807. int(0)
  808. [1]=>
  809. int(1)
  810. [2]=>
  811. int(2)
  812. [3]=>
  813. int(3)
  814. [4]=>
  815. int(4)
  816. [5]=>
  817. int(5)
  818. }
  819. - With replacement
  820. array(0) {
  821. }
  822. array(9) {
  823. [0]=>
  824. int(0)
  825. [1]=>
  826. int(1)
  827. [2]=>
  828. string(1) "A"
  829. [3]=>
  830. string(1) "B"
  831. [4]=>
  832. string(1) "C"
  833. [5]=>
  834. int(2)
  835. [6]=>
  836. int(3)
  837. [7]=>
  838. int(4)
  839. [8]=>
  840. int(5)
  841. }
  842. Done