Home>

The array_key_exists () function determines whether the specified key exists in an array. If the key exists, it returns true, otherwise it returns false.

array_key_exists (key, array);

key:required. Specify key name

array:required. Specifies the input array

<?php
$a=array ("a" =>"dog", "b" =>"cat");
if (array_key_exists ("a", $a)) {
  echo "key exists!";
} else {
  echo "key does not exist!";
}
?>

Output:key exists!

Why is array_key_exists faster than in_array?

Array_key_exists and in_array query are different

array_key_exists determines whether there are key values

array_key_exists (a, arr)->if (isset (arr [a])) is true

While in_array needs to traverse the values, the loop is out of the loop

Follow up:

Does the index of the array have separate storage units?And optimized,The time complexity of array_key_exists is o (1), while in_array is o (n).??

Post reply:

In terms of complexity

array_key_exists is to determine whether a key has a value

in_array must be traversed once to get the same

Difference between isset and array_key_exists in php

1. Different judgments for array values,For values ​​that are null or "" or false, isset returns false and array_key_exists returns true;

3. When using isset to access a non-existing index array value,Does not cause an e_notice php error message;

4.array_key_exists will call get_defined_vars to determine if the array variable exists.isset is not used;

Test code:

<?php
function
microtime_float ()
{
list ($usec, $sec)=explode ("", microtime ());
return ((float) $usec+ (float) $sec);
}
$test_arr ["aa"]="dd";
$test_arr ["bb"]="";
$test_arr ["cc"]=null;
$test_arr ["dd"]=false;
$test_arr=array ("aa" =>"dd", "bb" =>"", "cc" =>null, "dd" =>false);
echo "isset aa is";var_dump (isset ($test_arr ["aa"]));echo "n";
echo "isset bb is";var_dump (isset ($test_arr ["bb"]));echo "n";
echo "isset cc is";var_dump (isset ($test_arr ["cc"]));echo "n";
echo "isset dd is";var_dump (isset ($test_arr ["cc"]));echo "n";
echo "isset none is";var_dump (isset ($test_arr ["none"]));echo "n";
echo "key_exist aa is";var_dump (array_key_exists ("aa", $test_arr));echo "n";
echo "key_exist bb is";var_dump (array_key_exists ("bb", $test_arr));echo "n";
echo "key_exist cc is";var_dump (array_key_exists ("cc", $test_arr));echo "n";
echo "key_exist dd is";var_dump (array_key_exists ("dd", $test_arr));echo "n";
echo "key_exist none is";var_dump (array_key_exists ("none", $test_arr));echo "n";
$time_start=microtime_float ();
for ($i=0;$i<100;$i ++) {
isset ($test_arr ["aa"]);
}
$time_end=microtime_float ();
$time=$time_end-$time_start;
echo "isset 100 is $timen";
for ($i=0;$i<10000;$i ++) {
isset ($test_arr ["aa"]);
}
$time_end=microtime_float ();
$time=$time_end-$time_start;
echo "isset 10000 is $timen";
for ($i=0;$i<1000000;$i ++) {
isset ($test_arr ["aa"]);
}
$time_end=microtime_float ();
$time=$time_end-$time_start;
echo "isset 1000000 is $timen";
//++++++++++++++++++++++++++++++
$time_start=microtime_float ();
for ($i=0;$i<100;$i ++) {
array_key_exists ("aa", $test_arr);
}
$time_end=microtime_float ();
$time=$time_end-$time_start;
echo "array_key_exists 100 is $timen";
for ($i=0;$i<10000;$i ++) {
array_key_exists ("aa", $test_arr);
}
$time_end=microtime_float ();
$time=$time_end-$time_start;
echo "array_key_exists 10000 is $timen";
for ($i=0;$i<1000000;$i ++) {
array_key_exists ("aa", $test_arr);
}
$time_end=microtime_float ();
$time=$time_end-$time_start;
echo "array_key_exists 1000000 is $timen";
php
  • Previous SpringMVC restful annotation @RequestBody for json and object conversion
  • Next Detailed import and export of module module in AngularJS