PageRenderTime 439ms CodeModel.GetById 17ms RepoModel.GetById 0ms app.codeStats 0ms

/hphp/test/zend/bad/ext/standard/tests/array/end.php

http://github.com/facebook/hiphop-php
PHP | 122 lines | 84 code | 19 blank | 19 comment | 0 complexity | 0922fd36744a2b37d7e04f7bd4ee75bc MD5 | raw file
Possible License(s): LGPL-2.1, BSD-2-Clause, BSD-3-Clause, MPL-2.0-no-copyleft-exception, MIT, LGPL-2.0, Apache-2.0
  1. <?php
  2. /* Prototype: mixed end ( array &$array );
  3. Description: Advances internal pointer of array to last element, and returns its value.
  4. */
  5. $arrays = array (
  6. array( 0 ),
  7. range(1, 100 ),
  8. range('a', 'z', 2 ),
  9. array("a" => "A", 2 => "B", "C" => 3, 4 => 4, "one" => 1, "" => NULL ),
  10. array(1, array(1, 2 => 3 ), "one" => 1, "5" => 5 ),
  11. array(-1, -2, -3, -4, "-0.005" => "neg0.005", 2.0 => "float2", "neg.9" => -.9 ),
  12. array(1.0005, 2.000000, -3.000000, -4.9999999 ),
  13. array(true, false),
  14. array("PHP", "Web2.0", "SOA"),
  15. array(1, array() ),
  16. array(1, 2, "" ),
  17. array(" "),
  18. array(2147483647, 2147483648, -2147483647, -2147483648 ),
  19. array(0x7FFFFFFF, -0x80000000, 017777777777, -020000000000 ),
  20. array(-.6700000E+3, -4.10003E+3, 1e-5, -1E+5, 000002.00 )
  21. );
  22. /* loop through $arrays to print the last element of each sub-array */
  23. echo "*** Testing end() on different arrays ***\n";
  24. $counter = 1;
  25. foreach ($arrays as $sub_array){
  26. echo "-- Iteration $counter --\n";
  27. var_dump( end($sub_array) );
  28. /* ensure that internal pointer is moved to last element */
  29. var_dump( current($sub_array) );
  30. $counter++;
  31. }
  32. /* checking for end() on sub-arrays */
  33. echo "\n*** Testing end() with sub-arrays ***\n";
  34. $test_array = array(1, array(1 => "one", "two" => 2, "" => "f") );
  35. var_dump( end($test_array) );
  36. var_dump( end($test_array[1]) );
  37. /* checking working of end() when array elements are deleted */
  38. echo "\n*** Testing end() when array elements are deleted ***\n";
  39. $array_test = array("a", "b", "d", 7, "u" => "U", -4, "-.008" => "neg.008");
  40. // remove first element from array
  41. echo "\n-- Remove first element from array --\n";
  42. unset($array_test[0]);
  43. var_dump( end($array_test) );
  44. // remove last element from array, rewind and check end()
  45. echo "\n-- Remove last element from array --\n";
  46. unset($array_test['-.008']);
  47. var_dump( end($array_test) );
  48. reset( $array_test );
  49. var_dump( end($array_test) );
  50. // remove any element !first, !last, rewind and check end()
  51. echo "\n-- Remove any element from array apart from first and last element --\n";
  52. unset($array_test[7]);
  53. var_dump( end($array_test) );
  54. var_dump( reset($array_test) );
  55. var_dump( end($array_test) );
  56. /* Checking on OBJECTS type */
  57. echo "\n*** Testing end() on objects ***\n";
  58. class foo
  59. {
  60. function __toString() {
  61. return "Object";
  62. }
  63. }
  64. class foo1
  65. {
  66. function __toString() {
  67. return "Object1";
  68. }
  69. }
  70. $object1 = new foo(); //new object created
  71. $object2 = new foo1();
  72. $array_object = array();
  73. $array_object[0] = &$object1;
  74. $array_object[1] = &$object2;
  75. var_dump( end($array_object) );
  76. var_dump($array_object);
  77. /* Checking on RESOURCE type */
  78. echo "\n*** Testing end() on resource type ***\n";
  79. //file type resource
  80. $file_handle = fopen(__FILE__, "r");
  81. //directory type resource
  82. $dir_handle = opendir( dirname(__FILE__) );
  83. //store resources in array
  84. $resources = array($file_handle, $dir_handle);
  85. var_dump( end($resources) );
  86. var_dump( current($resources) );
  87. echo "\n*** Testing error conditions ***\n";
  88. /* checking for unexpected number of arguments */
  89. var_dump( end() );
  90. var_dump( end($array[0], $array[0]) );
  91. /* checking for unexpected type of arguments */
  92. $var=1;
  93. $var1="string";
  94. var_dump( end($var) );
  95. var_dump( end($var1) );
  96. /* checking null array */
  97. $null_array = array();
  98. var_dump( end($null_array) );
  99. echo "Done\n";
  100. /* cleaning resource handles */
  101. fclose( $file_handle ); //file resource handle deleted
  102. closedir( $dir_handle ); //dir resource handle deleted
  103. ?>