array_reverse_variation2.phpt 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414
  1. --TEST--
  2. Test array_reverse() function : usage variations - unexpected values for 'preserve_keys' argument
  3. --FILE--
  4. <?php
  5. /* Prototype : array array_reverse(array $array [, bool $preserve_keys])
  6. * Description: Return input as a new array with the order of the entries reversed
  7. * Source code: ext/standard/array.c
  8. */
  9. /*
  10. * testing the functionality of array_reverse() by giving unexpected values for $preserve_keys argument
  11. */
  12. echo "*** Testing array_reverse() : usage variations ***\n";
  13. // Initialise the array
  14. $array = array("a" => "green", "red", "blue", "red", "orange", "pink");
  15. //get an unset variable
  16. $unset_var = 10;
  17. unset ($unset_var);
  18. //get a resource variable
  19. $fp = fopen(__FILE__, "r");
  20. //get a class
  21. class classA
  22. {
  23. public function __toString(){
  24. return "Class A object";
  25. }
  26. }
  27. //array of values to iterate over
  28. $preserve_keys = array (
  29. // int data
  30. /*1*/ 0,
  31. 1,
  32. 12345,
  33. -2345,
  34. // float data
  35. /*5*/ 10.5,
  36. -10.5,
  37. 10.5e10,
  38. 10.6E-10,
  39. .5,
  40. // array data
  41. /*10*/ array(),
  42. array(0),
  43. array(1),
  44. array(1, 2),
  45. array('color' => 'red', 'item' => 'pen'),
  46. // null data
  47. /*15*/ NULL,
  48. null,
  49. // boolean data
  50. true,
  51. false,
  52. TRUE,
  53. FALSE,
  54. // empty data
  55. /*21*/
  56. "",
  57. '',
  58. // object data
  59. new classA(),
  60. // undefined data
  61. @$undefined_var,
  62. // unset data
  63. @$unset_var,
  64. // resource variable
  65. /*26*/ $fp
  66. );
  67. // loop through each element of the array $preserve_keys to check the behavior of array_reverse()
  68. $iterator = 1;
  69. foreach($preserve_keys as $preserve_key) {
  70. echo "-- Iteration $iterator --\n";
  71. var_dump( array_reverse($array, $preserve_key) );
  72. $iterator++;
  73. };
  74. // close the file resouce used
  75. fclose($fp);
  76. echo "Done";
  77. ?>
  78. --EXPECTF--
  79. *** Testing array_reverse() : usage variations ***
  80. -- Iteration 1 --
  81. array(6) {
  82. [0]=>
  83. string(4) "pink"
  84. [1]=>
  85. string(6) "orange"
  86. [2]=>
  87. string(3) "red"
  88. [3]=>
  89. string(4) "blue"
  90. [4]=>
  91. string(3) "red"
  92. ["a"]=>
  93. string(5) "green"
  94. }
  95. -- Iteration 2 --
  96. array(6) {
  97. [4]=>
  98. string(4) "pink"
  99. [3]=>
  100. string(6) "orange"
  101. [2]=>
  102. string(3) "red"
  103. [1]=>
  104. string(4) "blue"
  105. [0]=>
  106. string(3) "red"
  107. ["a"]=>
  108. string(5) "green"
  109. }
  110. -- Iteration 3 --
  111. array(6) {
  112. [4]=>
  113. string(4) "pink"
  114. [3]=>
  115. string(6) "orange"
  116. [2]=>
  117. string(3) "red"
  118. [1]=>
  119. string(4) "blue"
  120. [0]=>
  121. string(3) "red"
  122. ["a"]=>
  123. string(5) "green"
  124. }
  125. -- Iteration 4 --
  126. array(6) {
  127. [4]=>
  128. string(4) "pink"
  129. [3]=>
  130. string(6) "orange"
  131. [2]=>
  132. string(3) "red"
  133. [1]=>
  134. string(4) "blue"
  135. [0]=>
  136. string(3) "red"
  137. ["a"]=>
  138. string(5) "green"
  139. }
  140. -- Iteration 5 --
  141. array(6) {
  142. [4]=>
  143. string(4) "pink"
  144. [3]=>
  145. string(6) "orange"
  146. [2]=>
  147. string(3) "red"
  148. [1]=>
  149. string(4) "blue"
  150. [0]=>
  151. string(3) "red"
  152. ["a"]=>
  153. string(5) "green"
  154. }
  155. -- Iteration 6 --
  156. array(6) {
  157. [4]=>
  158. string(4) "pink"
  159. [3]=>
  160. string(6) "orange"
  161. [2]=>
  162. string(3) "red"
  163. [1]=>
  164. string(4) "blue"
  165. [0]=>
  166. string(3) "red"
  167. ["a"]=>
  168. string(5) "green"
  169. }
  170. -- Iteration 7 --
  171. array(6) {
  172. [4]=>
  173. string(4) "pink"
  174. [3]=>
  175. string(6) "orange"
  176. [2]=>
  177. string(3) "red"
  178. [1]=>
  179. string(4) "blue"
  180. [0]=>
  181. string(3) "red"
  182. ["a"]=>
  183. string(5) "green"
  184. }
  185. -- Iteration 8 --
  186. array(6) {
  187. [4]=>
  188. string(4) "pink"
  189. [3]=>
  190. string(6) "orange"
  191. [2]=>
  192. string(3) "red"
  193. [1]=>
  194. string(4) "blue"
  195. [0]=>
  196. string(3) "red"
  197. ["a"]=>
  198. string(5) "green"
  199. }
  200. -- Iteration 9 --
  201. array(6) {
  202. [4]=>
  203. string(4) "pink"
  204. [3]=>
  205. string(6) "orange"
  206. [2]=>
  207. string(3) "red"
  208. [1]=>
  209. string(4) "blue"
  210. [0]=>
  211. string(3) "red"
  212. ["a"]=>
  213. string(5) "green"
  214. }
  215. -- Iteration 10 --
  216. Warning: array_reverse() expects parameter 2 to be boolean, array given in %s on line %d
  217. NULL
  218. -- Iteration 11 --
  219. Warning: array_reverse() expects parameter 2 to be boolean, array given in %s on line %d
  220. NULL
  221. -- Iteration 12 --
  222. Warning: array_reverse() expects parameter 2 to be boolean, array given in %s on line %d
  223. NULL
  224. -- Iteration 13 --
  225. Warning: array_reverse() expects parameter 2 to be boolean, array given in %s on line %d
  226. NULL
  227. -- Iteration 14 --
  228. Warning: array_reverse() expects parameter 2 to be boolean, array given in %s on line %d
  229. NULL
  230. -- Iteration 15 --
  231. array(6) {
  232. [0]=>
  233. string(4) "pink"
  234. [1]=>
  235. string(6) "orange"
  236. [2]=>
  237. string(3) "red"
  238. [3]=>
  239. string(4) "blue"
  240. [4]=>
  241. string(3) "red"
  242. ["a"]=>
  243. string(5) "green"
  244. }
  245. -- Iteration 16 --
  246. array(6) {
  247. [0]=>
  248. string(4) "pink"
  249. [1]=>
  250. string(6) "orange"
  251. [2]=>
  252. string(3) "red"
  253. [3]=>
  254. string(4) "blue"
  255. [4]=>
  256. string(3) "red"
  257. ["a"]=>
  258. string(5) "green"
  259. }
  260. -- Iteration 17 --
  261. array(6) {
  262. [4]=>
  263. string(4) "pink"
  264. [3]=>
  265. string(6) "orange"
  266. [2]=>
  267. string(3) "red"
  268. [1]=>
  269. string(4) "blue"
  270. [0]=>
  271. string(3) "red"
  272. ["a"]=>
  273. string(5) "green"
  274. }
  275. -- Iteration 18 --
  276. array(6) {
  277. [0]=>
  278. string(4) "pink"
  279. [1]=>
  280. string(6) "orange"
  281. [2]=>
  282. string(3) "red"
  283. [3]=>
  284. string(4) "blue"
  285. [4]=>
  286. string(3) "red"
  287. ["a"]=>
  288. string(5) "green"
  289. }
  290. -- Iteration 19 --
  291. array(6) {
  292. [4]=>
  293. string(4) "pink"
  294. [3]=>
  295. string(6) "orange"
  296. [2]=>
  297. string(3) "red"
  298. [1]=>
  299. string(4) "blue"
  300. [0]=>
  301. string(3) "red"
  302. ["a"]=>
  303. string(5) "green"
  304. }
  305. -- Iteration 20 --
  306. array(6) {
  307. [0]=>
  308. string(4) "pink"
  309. [1]=>
  310. string(6) "orange"
  311. [2]=>
  312. string(3) "red"
  313. [3]=>
  314. string(4) "blue"
  315. [4]=>
  316. string(3) "red"
  317. ["a"]=>
  318. string(5) "green"
  319. }
  320. -- Iteration 21 --
  321. array(6) {
  322. [0]=>
  323. string(4) "pink"
  324. [1]=>
  325. string(6) "orange"
  326. [2]=>
  327. string(3) "red"
  328. [3]=>
  329. string(4) "blue"
  330. [4]=>
  331. string(3) "red"
  332. ["a"]=>
  333. string(5) "green"
  334. }
  335. -- Iteration 22 --
  336. array(6) {
  337. [0]=>
  338. string(4) "pink"
  339. [1]=>
  340. string(6) "orange"
  341. [2]=>
  342. string(3) "red"
  343. [3]=>
  344. string(4) "blue"
  345. [4]=>
  346. string(3) "red"
  347. ["a"]=>
  348. string(5) "green"
  349. }
  350. -- Iteration 23 --
  351. Warning: array_reverse() expects parameter 2 to be boolean, object given in %s on line %d
  352. NULL
  353. -- Iteration 24 --
  354. array(6) {
  355. [0]=>
  356. string(4) "pink"
  357. [1]=>
  358. string(6) "orange"
  359. [2]=>
  360. string(3) "red"
  361. [3]=>
  362. string(4) "blue"
  363. [4]=>
  364. string(3) "red"
  365. ["a"]=>
  366. string(5) "green"
  367. }
  368. -- Iteration 25 --
  369. array(6) {
  370. [0]=>
  371. string(4) "pink"
  372. [1]=>
  373. string(6) "orange"
  374. [2]=>
  375. string(3) "red"
  376. [3]=>
  377. string(4) "blue"
  378. [4]=>
  379. string(3) "red"
  380. ["a"]=>
  381. string(5) "green"
  382. }
  383. -- Iteration 26 --
  384. Warning: array_reverse() expects parameter 2 to be boolean, resource given in %s on line %d
  385. NULL
  386. Done