key_variation4.phpt 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. --TEST--
  2. Test key() function : usage variations
  3. --FILE--
  4. <?php
  5. /* Prototype : mixed key(array $array_arg)
  6. * Description: Return the key of the element currently pointed to by the internal array pointer
  7. * Source code: ext/standard/array.c
  8. */
  9. /*
  10. * Test how key() behaves with muti-dimensional and recursive arrays
  11. */
  12. echo "*** Testing key() : usage variations ***\n";
  13. echo "\n-- Two Dimensional Array --\n";
  14. $multi_array = array ('zero', array (1, 2, 3), 'two');
  15. echo "Initial Position: ";
  16. var_dump(key($multi_array));
  17. echo "Next Position: ";
  18. next($multi_array);
  19. var_dump(key($multi_array));
  20. echo "End Position: ";
  21. end($multi_array);
  22. var_dump(key($multi_array));
  23. echo "\n-- Access an Array Within an Array --\n";
  24. //accessing an array within an array
  25. echo "Initial Position: ";
  26. var_dump(key($multi_array[1]));
  27. echo "\n-- Recursive, Multidimensional Array --\n";
  28. //create a recursive array
  29. $multi_array[] = &$multi_array;
  30. //See where internal pointer is after adding more elements
  31. echo "Current Position: ";
  32. var_dump(key($multi_array));
  33. //see if internal pointer is in same position as referenced array
  34. var_dump(key($multi_array[3][3][3]));
  35. // see if internal pointer is in the same position from when accessing this inner array
  36. var_dump(key($multi_array[3][3][3][1]));
  37. ?>
  38. ===DONE===
  39. --EXPECTF--
  40. *** Testing key() : usage variations ***
  41. -- Two Dimensional Array --
  42. Initial Position: int(0)
  43. Next Position: int(1)
  44. End Position: int(2)
  45. -- Access an Array Within an Array --
  46. Initial Position: int(0)
  47. -- Recursive, Multidimensional Array --
  48. Current Position: int(2)
  49. int(2)
  50. int(0)
  51. ===DONE===