PageRenderTime 36ms CodeModel.GetById 10ms RepoModel.GetById 0ms app.codeStats 0ms

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

http://github.com/facebook/hiphop-php
PHP | 117 lines | 85 code | 7 blank | 25 comment | 2 complexity | 26088051f3d62165b53ee11da9f3a3d3 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:
  3. * bool array_key_exists ( mixed $key, array $search );
  4. * Description:
  5. * Returns TRUE if the given key is set in the array.
  6. * key can be any value possible for an array index.
  7. * Also also works on objects.
  8. */
  9. echo "*** Testing basic functionalities ***\n";
  10. /* Arrays with regular values */
  11. $search_arrays = array(
  12. array(1,2,3,4),
  13. array('a','b','c'),
  14. array('abc', 'bcd', 'dcf'),
  15. array("test", "rest", "enjoy"),
  16. array("Name" => "Jack", "Loc" => "Mars", "Id" => "MS123"),
  17. array('Red' => 'Rose', 'I' => 'You'),
  18. array(0 => 'Zero', 1 => 'One', 2 => 'Two', 3 => "Three" ),
  19. array(0.1 => 'Zero', 1.1 => 'One', 2.2 => 'Two', 3.3 => "Three" )
  20. );
  21. /* keys to search in $search_arrays. $keys[0]
  22. is the key to be searched in $search_arrays[0] and so on */
  23. $keys = array( 1, 'a', 2, 4, "Name", "Red", 0, 3 );
  24. $key_counter = 0;
  25. foreach ($search_arrays as $search_array) {
  26. $key = $keys[ $key_counter++ ];
  27. echo "-- Iteration $key_counter --\n";
  28. var_dump( array_key_exists($key, $search_array) );
  29. }
  30. echo "\n*** Testing possible variations ***\n";
  31. // use different keys on each sub array of $search_arrays
  32. $key_variations = array ("", NULL, null, " ", '', "test", 1);
  33. $key_counter = 0;
  34. $key_count = count ( $key_variations );
  35. echo "\n** Variation loop 1 **\n";
  36. $out_loop_count = 0;
  37. foreach ($search_arrays as $search_array) {
  38. $key_counter = 0;
  39. $out_loop_count ++; echo "-- Iteration $out_loop_count --\n";
  40. while ( $key_counter < $key_count ) {
  41. $key = $key_variations[ $key_counter++ ];
  42. var_dump( array_key_exists($key, $search_array) );
  43. }
  44. }
  45. // arrays with variation in elements
  46. $search_arrays_v = array (
  47. array(),
  48. array(NULL),
  49. array(array(), 1, 2),
  50. array(1,2,3, "" => "value", NULL => "value", true => "value" ),
  51. array( array(2,4,5), array ("a","b","d") )
  52. );
  53. // search for $key_variations in each sub array of $search_arrays_v
  54. echo "\n** Variation loop 2 **\n";
  55. $out_loop_count = 0;
  56. foreach ($search_arrays_v as $search_array) {
  57. $key_counter = 0;
  58. $out_loop_count ++; echo "-- Iteration $out_loop_count --\n";
  59. while ( $key_counter < $key_count ) {
  60. $key = $key_variations[ $key_counter++ ];
  61. var_dump( array_key_exists($key, $search_array) );
  62. }
  63. }
  64. echo "\n*** Testing error conditions ***\n";
  65. //Zeor args
  66. var_dump( array_key_exists() );
  67. // first args as array
  68. var_dump( array_key_exists(array(), array()) );
  69. // second args as string
  70. var_dump( array_key_exists("", "") );
  71. // second args a integer
  72. var_dump( array_key_exists(1, 1) );
  73. // second args as NULL
  74. var_dump( array_key_exists(1, NULL) );
  75. // second args as boolean
  76. var_dump( array_key_exists(1, true) );
  77. // first args as boolean
  78. var_dump( array_key_exists(false, true) );
  79. // second args as float
  80. var_dump( array_key_exists(false, 17.5) );
  81. // args more than expected
  82. var_dump( array_key_exists(1, array(), array()) );
  83. // first argument as floating point value
  84. var_dump( array_key_exists(17.5, array(1,23) ) ) ;
  85. echo "\n*** Testing operation on objects ***\n";
  86. class key_check
  87. {
  88. private $private_var = "Priviate var";
  89. protected $protected_var = "Protected var";
  90. public $public_var = "Public var";
  91. public $arr = array("var" => "value", "1" => "one", ""=>"value");
  92. public function print_member()
  93. {
  94. echo $this->$private_var."\n";
  95. echo $this->$protected_var."\n";
  96. echo $this->$public_var."\n";
  97. }
  98. }
  99. $key_check_obj = new key_check; //new object
  100. /* array_key_exists() on an object, it should work on only public member variables */
  101. var_dump(array_key_exists("private_var", $key_check_obj)); // not found, private member
  102. var_dump(array_key_exists("protected_var", $key_check_obj)); // not found, private member
  103. var_dump(array_key_exists("public_var", $key_check_obj)); // found, public member
  104. var_dump(array_key_exists("print_member", $key_check_obj)); // not found, its a function
  105. var_dump(array_key_exists("arr", $key_check_obj)); //found, public member
  106. var_dump(array_key_exists("var", $key_check_obj->arr)); //found, key is in member array
  107. /* error condition, first argument as object */
  108. var_dump( array_key_exists($key_check_obj, $key_check_obj) );
  109. echo "Done\n";
  110. ?>