欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

php數(shù)組函數(shù)array_key_exists()小結(jié)

 更新時間:2015年12月10日 12:00:30   投稿:hebedich  
本文給大家匯總介紹了php數(shù)組函數(shù)array_key_exists()的相關(guān)知識以及與in_array的性能對比,與isset的區(qū)別分析,非常的詳細(xì),有需要的小伙伴可以參考下。

array_key_exists()函數(shù)判斷某個數(shù)組中是否存在指定的key,如果key存在,則返回true,否則返回flase

array_key_exists(key,array);

key:必需。規(guī)定鍵名
array:必需。規(guī)定輸入的數(shù)組

<?php
$a = array('a'=>'Dog','b'=>'Cat');
if(array_key_exists('a',$a)){
  echo 'Key exists!';
} else{
  echo 'Key does not exist!';
}
?>

輸出:Key exists!

array_key_exists為什么比in_array快?

array_key_exists 和 in_array 查詢的東西都不一樣吧
array_key_exists 判斷是否有鍵值
array_key_exists(a,arr)->if(isset(arr[a]))就是true

而in_array 需要去遍歷值 遍歷到了才跳出循環(huán)

追問:
是不是數(shù)組的索引有單獨的存儲單元,而且優(yōu)化過,array_key_exists的時間復(fù)雜度是o(1), 而in_array是o(n) ??

追答:
重復(fù)雜度來說是這樣

array_key_exists  是判斷某個鍵有沒有值

in_array  要遍歷一次 獲取是否相同 不知道建的情況下必須遍歷

PHP中isset與array_key_exists的區(qū)別

1.對于數(shù)組值的判斷不同,對于值為null或''或false,isset返回false,array_key_exists返回true;

2. 執(zhí)行效率不同,isset是內(nèi)建運算符,array_key_exists是php內(nèi)置函數(shù),isset要快一些。請參考:PHP 函數(shù)實現(xiàn)原理及性能分析

3.當(dāng)用isset訪問一個不存在索引數(shù)組值時,不會引起一個E_NOTICE的php錯誤消息;

4.array_key_exists 會調(diào)用get_defined_vars判斷數(shù)組變量是否存在,isset不用;

  測試代碼:

<?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";

相關(guān)文章

最新評論