009.phpt 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408
  1. --TEST--
  2. Test key(), current(), next() & reset() functions
  3. --FILE--
  4. <?php
  5. $basic_arrays = array (
  6. array(0), // array with element as 0
  7. array(1), // array with single element
  8. array(1,2, 3, -1, -2, -3), // array of integers
  9. array(1.1, 2.2, 3.3, -1.1, -2.2, -3.3), // array of floats
  10. array('a', 'b', 'c', "ab", "ac", "ad"), // string array
  11. array("a" => "apple", "b" => "book", "c" => "cook"), // associative array
  12. array('d' => 'drink', 'p' => 'port', 's' => 'set'), // another associative array
  13. array(1 => 'One', 2 => 'two', 3 => "three") // associative array with key as integers
  14. );
  15. $varient_arrays = array (
  16. array(), // empty array
  17. array(""), // array with null string
  18. array(NULL),// array with NULL
  19. array(null),// array with null
  20. array(NULL, true, null, "", 1), // mixed array
  21. array(-1 => "test", -2 => "rest", 2 => "two",
  22. "" => "string", 0 => "zero", "" => "" ) // mixed array
  23. );
  24. echo "*** Testing basic operations ***\n";
  25. $loop_count = 1;
  26. foreach ($basic_arrays as $sub_array ) {
  27. echo "-- Iteration $loop_count --\n";
  28. $loop_count++;
  29. $c = count ($sub_array);
  30. $c++; // increment by one to create the situation of accessing beyond array size
  31. while ( $c ) {
  32. var_dump( current($sub_array)); // current element
  33. var_dump( key($sub_array) ); // key of the current element
  34. var_dump( next($sub_array) ); // move to next element
  35. $c --;
  36. }
  37. var_dump( reset($sub_array) ); // reset the internal pointer to first element
  38. var_dump( key($sub_array) ); // access the array after reset
  39. var_dump( $sub_array ); // dump the array to see that its intact
  40. echo "\n";
  41. }
  42. echo "\n*** Testing possible variations ***\n";
  43. $loop_count = 1;
  44. foreach ($varient_arrays as $sub_array ) {
  45. echo "-- Iteration $loop_count --\n";
  46. $loop_count++;
  47. $c = count ($sub_array);
  48. $c++; // increment by one to create the situation of accessing beyond array size
  49. while ( $c ) {
  50. var_dump( current($sub_array)); // current element
  51. var_dump( key($sub_array) ); // key of the current element
  52. var_dump( next($sub_array) ); // move to next element
  53. $c --;
  54. }
  55. var_dump( reset($sub_array) ); // reset the internal pointer to first element
  56. var_dump( key($sub_array) ); // access the array after reset
  57. var_dump( $sub_array ); // dump the array to see that its intact
  58. echo "\n";
  59. }
  60. echo "Done\n";
  61. ?>
  62. --EXPECT--
  63. *** Testing basic operations ***
  64. -- Iteration 1 --
  65. int(0)
  66. int(0)
  67. bool(false)
  68. bool(false)
  69. NULL
  70. bool(false)
  71. int(0)
  72. int(0)
  73. array(1) {
  74. [0]=>
  75. int(0)
  76. }
  77. -- Iteration 2 --
  78. int(1)
  79. int(0)
  80. bool(false)
  81. bool(false)
  82. NULL
  83. bool(false)
  84. int(1)
  85. int(0)
  86. array(1) {
  87. [0]=>
  88. int(1)
  89. }
  90. -- Iteration 3 --
  91. int(1)
  92. int(0)
  93. int(2)
  94. int(2)
  95. int(1)
  96. int(3)
  97. int(3)
  98. int(2)
  99. int(-1)
  100. int(-1)
  101. int(3)
  102. int(-2)
  103. int(-2)
  104. int(4)
  105. int(-3)
  106. int(-3)
  107. int(5)
  108. bool(false)
  109. bool(false)
  110. NULL
  111. bool(false)
  112. int(1)
  113. int(0)
  114. array(6) {
  115. [0]=>
  116. int(1)
  117. [1]=>
  118. int(2)
  119. [2]=>
  120. int(3)
  121. [3]=>
  122. int(-1)
  123. [4]=>
  124. int(-2)
  125. [5]=>
  126. int(-3)
  127. }
  128. -- Iteration 4 --
  129. float(1.1)
  130. int(0)
  131. float(2.2)
  132. float(2.2)
  133. int(1)
  134. float(3.3)
  135. float(3.3)
  136. int(2)
  137. float(-1.1)
  138. float(-1.1)
  139. int(3)
  140. float(-2.2)
  141. float(-2.2)
  142. int(4)
  143. float(-3.3)
  144. float(-3.3)
  145. int(5)
  146. bool(false)
  147. bool(false)
  148. NULL
  149. bool(false)
  150. float(1.1)
  151. int(0)
  152. array(6) {
  153. [0]=>
  154. float(1.1)
  155. [1]=>
  156. float(2.2)
  157. [2]=>
  158. float(3.3)
  159. [3]=>
  160. float(-1.1)
  161. [4]=>
  162. float(-2.2)
  163. [5]=>
  164. float(-3.3)
  165. }
  166. -- Iteration 5 --
  167. string(1) "a"
  168. int(0)
  169. string(1) "b"
  170. string(1) "b"
  171. int(1)
  172. string(1) "c"
  173. string(1) "c"
  174. int(2)
  175. string(2) "ab"
  176. string(2) "ab"
  177. int(3)
  178. string(2) "ac"
  179. string(2) "ac"
  180. int(4)
  181. string(2) "ad"
  182. string(2) "ad"
  183. int(5)
  184. bool(false)
  185. bool(false)
  186. NULL
  187. bool(false)
  188. string(1) "a"
  189. int(0)
  190. array(6) {
  191. [0]=>
  192. string(1) "a"
  193. [1]=>
  194. string(1) "b"
  195. [2]=>
  196. string(1) "c"
  197. [3]=>
  198. string(2) "ab"
  199. [4]=>
  200. string(2) "ac"
  201. [5]=>
  202. string(2) "ad"
  203. }
  204. -- Iteration 6 --
  205. string(5) "apple"
  206. string(1) "a"
  207. string(4) "book"
  208. string(4) "book"
  209. string(1) "b"
  210. string(4) "cook"
  211. string(4) "cook"
  212. string(1) "c"
  213. bool(false)
  214. bool(false)
  215. NULL
  216. bool(false)
  217. string(5) "apple"
  218. string(1) "a"
  219. array(3) {
  220. ["a"]=>
  221. string(5) "apple"
  222. ["b"]=>
  223. string(4) "book"
  224. ["c"]=>
  225. string(4) "cook"
  226. }
  227. -- Iteration 7 --
  228. string(5) "drink"
  229. string(1) "d"
  230. string(4) "port"
  231. string(4) "port"
  232. string(1) "p"
  233. string(3) "set"
  234. string(3) "set"
  235. string(1) "s"
  236. bool(false)
  237. bool(false)
  238. NULL
  239. bool(false)
  240. string(5) "drink"
  241. string(1) "d"
  242. array(3) {
  243. ["d"]=>
  244. string(5) "drink"
  245. ["p"]=>
  246. string(4) "port"
  247. ["s"]=>
  248. string(3) "set"
  249. }
  250. -- Iteration 8 --
  251. string(3) "One"
  252. int(1)
  253. string(3) "two"
  254. string(3) "two"
  255. int(2)
  256. string(5) "three"
  257. string(5) "three"
  258. int(3)
  259. bool(false)
  260. bool(false)
  261. NULL
  262. bool(false)
  263. string(3) "One"
  264. int(1)
  265. array(3) {
  266. [1]=>
  267. string(3) "One"
  268. [2]=>
  269. string(3) "two"
  270. [3]=>
  271. string(5) "three"
  272. }
  273. *** Testing possible variations ***
  274. -- Iteration 1 --
  275. bool(false)
  276. NULL
  277. bool(false)
  278. bool(false)
  279. NULL
  280. array(0) {
  281. }
  282. -- Iteration 2 --
  283. string(0) ""
  284. int(0)
  285. bool(false)
  286. bool(false)
  287. NULL
  288. bool(false)
  289. string(0) ""
  290. int(0)
  291. array(1) {
  292. [0]=>
  293. string(0) ""
  294. }
  295. -- Iteration 3 --
  296. NULL
  297. int(0)
  298. bool(false)
  299. bool(false)
  300. NULL
  301. bool(false)
  302. NULL
  303. int(0)
  304. array(1) {
  305. [0]=>
  306. NULL
  307. }
  308. -- Iteration 4 --
  309. NULL
  310. int(0)
  311. bool(false)
  312. bool(false)
  313. NULL
  314. bool(false)
  315. NULL
  316. int(0)
  317. array(1) {
  318. [0]=>
  319. NULL
  320. }
  321. -- Iteration 5 --
  322. NULL
  323. int(0)
  324. bool(true)
  325. bool(true)
  326. int(1)
  327. NULL
  328. NULL
  329. int(2)
  330. string(0) ""
  331. string(0) ""
  332. int(3)
  333. int(1)
  334. int(1)
  335. int(4)
  336. bool(false)
  337. bool(false)
  338. NULL
  339. bool(false)
  340. NULL
  341. int(0)
  342. array(5) {
  343. [0]=>
  344. NULL
  345. [1]=>
  346. bool(true)
  347. [2]=>
  348. NULL
  349. [3]=>
  350. string(0) ""
  351. [4]=>
  352. int(1)
  353. }
  354. -- Iteration 6 --
  355. string(4) "test"
  356. int(-1)
  357. string(4) "rest"
  358. string(4) "rest"
  359. int(-2)
  360. string(3) "two"
  361. string(3) "two"
  362. int(2)
  363. string(0) ""
  364. string(0) ""
  365. string(0) ""
  366. string(4) "zero"
  367. string(4) "zero"
  368. int(0)
  369. bool(false)
  370. bool(false)
  371. NULL
  372. bool(false)
  373. string(4) "test"
  374. int(-1)
  375. array(5) {
  376. [-1]=>
  377. string(4) "test"
  378. [-2]=>
  379. string(4) "rest"
  380. [2]=>
  381. string(3) "two"
  382. [""]=>
  383. string(0) ""
  384. [0]=>
  385. string(4) "zero"
  386. }
  387. Done