最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

array_key_exists()函數(shù)判斷某個(gè)數(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)

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

追答:
重復(fù)雜度來(lái)說(shuō)是這樣

array_key_exists  是判斷某個(gè)鍵有沒(méi)有值

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

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

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

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

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

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

  測(cè)試代碼:

<?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)文章

最新評(píng)論

罗城| 侯马市| 寻甸| 陆河县| 昆明市| 洪雅县| 克山县| 三亚市| 邵阳县| 延吉市| 富民县| 丰顺县| 新和县| 武宣县| 商丘市| 若尔盖县| 西丰县| 田东县| 当涂县| 海南省| 泰安市| 安国市| 毕节市| 资源县| 南康市| 化隆| 博爱县| 金溪县| 阿勒泰市| 广丰县| 安西县| 北碚区| 宁陵县| 玉树县| 肇源县| 萨嘎县| 大渡口区| 河北省| 元阳县| 句容市| 都匀市|