1--TEST--
2Test array_key_exists() function : usage variations -  equality test for certain data types
3--FILE--
4<?php
5/* Prototype  : bool array_key_exists(mixed $key, array $search)
6 * Description: Checks if the given key or index exists in the array
7 * Source code: ext/standard/array.c
8 * Alias to functions: key_exists
9 */
10
11/*
12 * Pass certain data types that can be taken as a key in an array
13 * and test whether array_key_exists(() thinks they are equal and therefore
14 * returns true when searching for them
15 */
16
17echo "*** Testing array_key_exists() : usage variations ***\n";
18
19$unset = 10;
20unset($unset);
21$array = array ('null' => null,
22                'NULL' => NULL,
23                'empty single quoted string' => '',
24                "empty double quoted string" => "",
25                'undefined variable' => @$undefined,
26                'unset variable' => @$unset);
27
28//iterate through original array
29foreach($array as $name => $input) {
30	$iterator = 1;
31	echo "\n-- Key in \$search array is : $name --\n";
32	$search[$input] = 'test';
33
34	//iterate through array again to see which values are considered equal
35	foreach($array as $key) {
36		echo "Iteration $iterator:  ";
37		var_dump(array_key_exists($key, $search));
38		$iterator++;
39	}
40	$search = null;
41}
42
43echo "Done";
44?>
45--EXPECT--
46*** Testing array_key_exists() : usage variations ***
47
48-- Key in $search array is : null --
49Iteration 1:  bool(true)
50Iteration 2:  bool(true)
51Iteration 3:  bool(true)
52Iteration 4:  bool(true)
53Iteration 5:  bool(true)
54Iteration 6:  bool(true)
55
56-- Key in $search array is : NULL --
57Iteration 1:  bool(true)
58Iteration 2:  bool(true)
59Iteration 3:  bool(true)
60Iteration 4:  bool(true)
61Iteration 5:  bool(true)
62Iteration 6:  bool(true)
63
64-- Key in $search array is : empty single quoted string --
65Iteration 1:  bool(true)
66Iteration 2:  bool(true)
67Iteration 3:  bool(true)
68Iteration 4:  bool(true)
69Iteration 5:  bool(true)
70Iteration 6:  bool(true)
71
72-- Key in $search array is : empty double quoted string --
73Iteration 1:  bool(true)
74Iteration 2:  bool(true)
75Iteration 3:  bool(true)
76Iteration 4:  bool(true)
77Iteration 5:  bool(true)
78Iteration 6:  bool(true)
79
80-- Key in $search array is : undefined variable --
81Iteration 1:  bool(true)
82Iteration 2:  bool(true)
83Iteration 3:  bool(true)
84Iteration 4:  bool(true)
85Iteration 5:  bool(true)
86Iteration 6:  bool(true)
87
88-- Key in $search array is : unset variable --
89Iteration 1:  bool(true)
90Iteration 2:  bool(true)
91Iteration 3:  bool(true)
92Iteration 4:  bool(true)
93Iteration 5:  bool(true)
94Iteration 6:  bool(true)
95Done
96