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. Specifies 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 different things, right?
array_key_exists determines whether there is a key value
array_key_exists(a,arr)->if(isset(arr[a])) is true
And in_array needs to traverse the value traversal Break out of the loop when it arrives
Question:
Is the index of the array a separate storage unit, and it has been optimized? The time complexity of array_key_exists is o(1), while in_array is o(n) ??
Follow up :
This is the case in terms of complexity
array_key_exists is to determine whether a certain key has a value
in_array. If you want to traverse once to get whether they are the same, you don’t know if you have to traverse it in case of construction
The difference between isset and array_key_exists in PHP
1 .The judgment of the array value is different. For the value is null or '' or false, isset returns false, array_key_exists returns true;
2. The execution efficiency is different, isset is a built-in operator, array_key_exists is a PHP built-in function, isset is faster Some. Please refer to: PHP function implementation principle and performance analysis
3. When using isset to access a non-existentindexarray value, it will not cause a PHP error message of E_NOTICE;
4.array_key_exists will call get_defined_vars to determine whether the array variable is 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";
The above is a summary of the PHP array function array_key_exists, including indexing. I hope it will be helpful to friends who are interested in PHP tutorials.