Annotation of embedaddon/php/ext/standard/tests/array/array_key_exists.phpt, revision 1.1.1.2

1.1       misho       1: --TEST--
                      2: Test array_key_exists() function
                      3: --FILE--
                      4: <?php
                      5: /* Prototype: 
                      6:  *  bool array_key_exists ( mixed $key, array $search );
                      7:  * Description:
                      8:  *  Returns TRUE if the given key is set in the array. 
                      9:  *  key can be any value possible for an array index. 
                     10:  *  Also also works on objects.
                     11:  */ 
                     12: 
                     13: echo "*** Testing basic functionalities ***\n";
                     14: /* Arrays with regular values */
                     15: $search_arrays = array(
                     16:            array(1,2,3,4),
                     17:            array('a','b','c'),
                     18:            array('abc', 'bcd', 'dcf'),
                     19:            array("test", "rest", "enjoy"),
                     20:            array("Name" => "Jack", "Loc" => "Mars", "Id" => "MS123"),
                     21:            array('Red' => 'Rose', 'I' => 'You'),
                     22:            array(0 => 'Zero', 1 => 'One', 2 => 'Two', 3 => "Three" ),
                     23:            array(0.1 => 'Zero', 1.1 => 'One', 2.2 => 'Two', 3.3 => "Three" )
                     24:           );
                     25: /* keys to search in $search_arrays. $keys[0] 
                     26:    is the key to be searched in $search_arrays[0] and so on */
                     27: $keys = array( 1, 'a', 2, 4, "Name", "Red", 0, 3 ); 
                     28: 
                     29: $key_counter = 0;
                     30: foreach ($search_arrays as $search_array) {
                     31:   $key = $keys[ $key_counter++ ];
                     32:   echo "-- Iteration $key_counter --\n";
                     33:   var_dump( array_key_exists($key, $search_array) );
                     34: }
                     35: 
                     36: echo "\n*** Testing possible variations ***\n";
                     37: // use different keys on each sub array of  $search_arrays
                     38: $key_variations = array ("", NULL, null, " ", '', "test", 1);
                     39: $key_counter = 0;
                     40: $key_count = count ( $key_variations );
                     41: echo "\n** Variation loop 1 **\n";
                     42: $out_loop_count = 0;
                     43: foreach ($search_arrays as $search_array) {
                     44:   $key_counter = 0;
                     45:   $out_loop_count ++; echo "-- Iteration $out_loop_count --\n";
                     46:   while ( $key_counter < $key_count ) {
                     47:     $key = $key_variations[ $key_counter++ ];
                     48:     var_dump( array_key_exists($key, $search_array) );
                     49:   }
                     50: }
                     51: // arrays with variation in elements  
                     52: $search_arrays_v = array (
                     53:                      array(),
                     54:                      array(NULL),
                     55:                      array(array(), 1, 2),
                     56:                      array(1,2,3, "" => "value", NULL => "value", true => "value" ),
                     57:                      array( array(2,4,5), array ("a","b","d") )
                     58:                    );
                     59: // search for $key_variations in each sub array of $search_arrays_v
                     60: echo "\n** Variation loop 2 **\n";
                     61: $out_loop_count = 0;
                     62: foreach ($search_arrays_v as $search_array) {
                     63:   $key_counter = 0;
                     64:   $out_loop_count ++; echo "-- Iteration $out_loop_count --\n";
                     65:   while ( $key_counter < $key_count ) {
                     66:     $key = $key_variations[ $key_counter++ ];
                     67:     var_dump( array_key_exists($key, $search_array) );
                     68:   }
                     69: }
                     70: 
                     71: echo "\n*** Testing error conditions ***\n";
                     72: //Zeor args
                     73: var_dump( array_key_exists() );
                     74: // first args as array 
                     75: var_dump( array_key_exists(array(), array()) );
                     76: // second args as string
                     77: var_dump( array_key_exists("", "") ); 
                     78: // second args a integer
                     79: var_dump( array_key_exists(1, 1) ); 
                     80: // second args as NULL
                     81: var_dump( array_key_exists(1, NULL) ); 
                     82: // second args as boolean
                     83: var_dump( array_key_exists(1, true) ); 
                     84: // first args as boolean
                     85: var_dump( array_key_exists(false, true) ); 
                     86: // second args as float 
                     87: var_dump( array_key_exists(false, 17.5) ); 
                     88: // args more than expected 
                     89: var_dump( array_key_exists(1, array(), array()) ); 
                     90: // first argument as floating point value
                     91: var_dump( array_key_exists(17.5, array(1,23) ) ) ; 
                     92: 
                     93: echo "\n*** Testing operation on objects ***\n";
                     94: class key_check
                     95: {
                     96:   private   $private_var = "Priviate var";
                     97:   protected $protected_var = "Protected var";
                     98:   public    $public_var = "Public var";
                     99:   public    $arr = array("var" => "value", "1" => "one", ""=>"value");
                    100:   public function print_member()
                    101:   {
                    102:     echo $this->$private_var."\n";
                    103:     echo $this->$protected_var."\n";
                    104:     echo $this->$public_var."\n";
                    105:   }
                    106: }
                    107: 
                    108: $key_check_obj = new key_check; //new object
                    109: /* array_key_exists() on an object, it should work on only public member variables */
                    110: var_dump(array_key_exists("private_var", $key_check_obj)); // not found, private member
                    111: var_dump(array_key_exists("protected_var", $key_check_obj)); // not found, private member
                    112: var_dump(array_key_exists("public_var", $key_check_obj)); // found, public member
                    113: var_dump(array_key_exists("print_member", $key_check_obj)); // not found, its a function
                    114: var_dump(array_key_exists("arr", $key_check_obj)); //found, public member
                    115: var_dump(array_key_exists("var", $key_check_obj->arr)); //found,  key is in member array
                    116: 
1.1.1.2 ! misho     117: /* error condition, first argument as object */
1.1       misho     118: var_dump( array_key_exists($key_check_obj, $key_check_obj) );
                    119: echo "Done\n";
                    120: ?>
                    121: --EXPECTF--    
                    122: *** Testing basic functionalities ***
                    123: -- Iteration 1 --
                    124: bool(true)
                    125: -- Iteration 2 --
                    126: bool(false)
                    127: -- Iteration 3 --
                    128: bool(true)
                    129: -- Iteration 4 --
                    130: bool(false)
                    131: -- Iteration 5 --
                    132: bool(true)
                    133: -- Iteration 6 --
                    134: bool(true)
                    135: -- Iteration 7 --
                    136: bool(true)
                    137: -- Iteration 8 --
                    138: bool(true)
                    139: 
                    140: *** Testing possible variations ***
                    141: 
                    142: ** Variation loop 1 **
                    143: -- Iteration 1 --
                    144: bool(false)
                    145: bool(false)
                    146: bool(false)
                    147: bool(false)
                    148: bool(false)
                    149: bool(false)
                    150: bool(true)
                    151: -- Iteration 2 --
                    152: bool(false)
                    153: bool(false)
                    154: bool(false)
                    155: bool(false)
                    156: bool(false)
                    157: bool(false)
                    158: bool(true)
                    159: -- Iteration 3 --
                    160: bool(false)
                    161: bool(false)
                    162: bool(false)
                    163: bool(false)
                    164: bool(false)
                    165: bool(false)
                    166: bool(true)
                    167: -- Iteration 4 --
                    168: bool(false)
                    169: bool(false)
                    170: bool(false)
                    171: bool(false)
                    172: bool(false)
                    173: bool(false)
                    174: bool(true)
                    175: -- Iteration 5 --
                    176: bool(false)
                    177: bool(false)
                    178: bool(false)
                    179: bool(false)
                    180: bool(false)
                    181: bool(false)
                    182: bool(false)
                    183: -- Iteration 6 --
                    184: bool(false)
                    185: bool(false)
                    186: bool(false)
                    187: bool(false)
                    188: bool(false)
                    189: bool(false)
                    190: bool(false)
                    191: -- Iteration 7 --
                    192: bool(false)
                    193: bool(false)
                    194: bool(false)
                    195: bool(false)
                    196: bool(false)
                    197: bool(false)
                    198: bool(true)
                    199: -- Iteration 8 --
                    200: bool(false)
                    201: bool(false)
                    202: bool(false)
                    203: bool(false)
                    204: bool(false)
                    205: bool(false)
                    206: bool(true)
                    207: 
                    208: ** Variation loop 2 **
                    209: -- Iteration 1 --
                    210: bool(false)
                    211: bool(false)
                    212: bool(false)
                    213: bool(false)
                    214: bool(false)
                    215: bool(false)
                    216: bool(false)
                    217: -- Iteration 2 --
                    218: bool(false)
                    219: bool(false)
                    220: bool(false)
                    221: bool(false)
                    222: bool(false)
                    223: bool(false)
                    224: bool(false)
                    225: -- Iteration 3 --
                    226: bool(false)
                    227: bool(false)
                    228: bool(false)
                    229: bool(false)
                    230: bool(false)
                    231: bool(false)
                    232: bool(true)
                    233: -- Iteration 4 --
                    234: bool(true)
                    235: bool(true)
                    236: bool(true)
                    237: bool(false)
                    238: bool(true)
                    239: bool(false)
                    240: bool(true)
                    241: -- Iteration 5 --
                    242: bool(false)
                    243: bool(false)
                    244: bool(false)
                    245: bool(false)
                    246: bool(false)
                    247: bool(false)
                    248: bool(true)
                    249: 
                    250: *** Testing error conditions ***
                    251: 
                    252: Warning: array_key_exists() expects exactly 2 parameters, 0 given in %s on line %d
                    253: NULL
                    254: 
                    255: Warning: array_key_exists(): The first argument should be either a string or an integer in %s on line %d
                    256: bool(false)
                    257: 
                    258: Warning: array_key_exists() expects parameter 2 to be array, string given in %s on line %d
                    259: NULL
                    260: 
                    261: Warning: array_key_exists() expects parameter 2 to be array, integer given in %s on line %d
                    262: NULL
                    263: 
                    264: Warning: array_key_exists() expects parameter 2 to be array, null given in %s on line %d
                    265: NULL
                    266: 
                    267: Warning: array_key_exists() expects parameter 2 to be array, boolean given in %s on line %d
                    268: NULL
                    269: 
                    270: Warning: array_key_exists() expects parameter 2 to be array, boolean given in %s on line %d
                    271: NULL
                    272: 
                    273: Warning: array_key_exists() expects parameter 2 to be array, double given in %s on line %d
                    274: NULL
                    275: 
                    276: Warning: array_key_exists() expects exactly 2 parameters, 3 given in %s on line %d
                    277: NULL
                    278: 
                    279: Warning: array_key_exists(): The first argument should be either a string or an integer in %s on line %d
                    280: bool(false)
                    281: 
                    282: *** Testing operation on objects ***
                    283: bool(false)
                    284: bool(false)
                    285: bool(true)
                    286: bool(false)
                    287: bool(true)
                    288: bool(true)
                    289: 
                    290: Warning: array_key_exists(): The first argument should be either a string or an integer in %s on line %d
                    291: bool(false)
                    292: Done

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>