I get a strange behavior when working with an array in my application, that is array_key_exists returns false when it should return true. I write this simple code :
function keyExists($data){
var_export($data); echo "<BR>";
echo "array_key_exists('key0',data) : ";
if(array_key_exists('key0', $data)) echo "TRUE"; else echo "FALSE"; echo "<BR>";
echo "array_key_exists('key1',data) : ";
if(array_key_exists('key1', $data)) echo "TRUE"; else echo "FALSE"; echo "<BR>";
echo "array_key_exists('key2',data) : ";
if(array_key_exists('key2', $data)) echo "TRUE"; else echo "FALSE"; echo "<BR>";
echo "array_key_exists('key3',data) : ";
if(array_key_exists('key3', $data)) echo "TRUE"; else echo "FALSE"; echo "<BR>";
echo "array_key_exists('key4',data) : ";
if(array_key_exists('key4', $data)) echo "TRUE"; else echo "FALSE"; echo "<BR>";
echo "<BR><BR>";
}
keyExists(["key1" => "value 1",
"key2" => "value 2",
"key3" => "value 3",
"key4" => "value 4"]);
keyExists(["key2" => "value 2",
"key1" => "value 1",
"key3" => "value 3",
"key4" => "value 4"]);
keyExists(["key0" => "value 0",
"key2" => "value 2",
"key1" => "value 1",
"key3" => "value 3",
"key4" => "value 4"]);
keyExists(["key0" => "value 0",
"key1" => "value 1",
"key2" => "value 2",
"key3" => "value 3",
"key4" => "value 4"]);
keyExists(array("key0" => "value 0",
"key1" => "value 1",
"key2" => "value 2",
"key3" => "value 3",
"key4" => "value 4"));
I run it on windows wamp with Php 7.4 and on Debian production server with Php 7.4, I get the same result :
array ( 'key1' => 'value 1', 'key2' => 'value 2', 'key3' => 'value 3', 'key4' => 'value 4', )
array_key_exists('key0',data) : FALSE
array_key_exists('key1',data) : FALSE // ???
array_key_exists('key2',data) : TRUE
array_key_exists('key3',data) : TRUE
array_key_exists('key4',data) : TRUE
array ( 'key2' => 'value 2', 'key1' => 'value 1', 'key3' => 'value 3', 'key4' => 'value 4', )
array_key_exists('key0',data) : FALSE
array_key_exists('key1',data) : TRUE
array_key_exists('key2',data) : FALSE // ???
array_key_exists('key3',data) : TRUE
array_key_exists('key4',data) : TRUE
array ( 'key0' => 'value 0', 'key2' => 'value 2', 'key1' => 'value 1', 'key3' => 'value 3', 'key4' => 'value 4', )
array_key_exists('key0',data) : TRUE
array_key_exists('key1',data) : TRUE
array_key_exists('key2',data) : FALSE // ???
array_key_exists('key3',data) : TRUE
array_key_exists('key4',data) : TRUE
array ( 'key0' => 'value 0', 'key1' => 'value 1', 'key2' => 'value 2', 'key3' => 'value 3', 'key4' => 'value 4', )
array_key_exists('key0',data) : TRUE
array_key_exists('key1',data) : TRUE
array_key_exists('key2',data) : FALSE // ???
array_key_exists('key3',data) : TRUE
array_key_exists('key4',data) : TRUE
array ( 'key0' => 'value 0', 'key1' => 'value 1', 'key2' => 'value 2', 'key3' => 'value 3', 'key4' => 'value 4', )
array_key_exists('key0',data) : TRUE
array_key_exists('key1',data) : TRUE
array_key_exists('key2',data) : FALSE // ???
array_key_exists('key3',data) : TRUE
array_key_exists('key4',data) : TRUE
I also tested same code with isset instead of array_key_exists, same result.