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>