array_key_exists()函數(shù)怎么在php中使用?相信很多沒(méi)有經(jīng)驗(yàn)的人對(duì)此束手無(wú)策,為此本文總結(jié)了問(wèn)題出現(xiàn)的原因和解決方法,通過(guò)這篇文章希望你能解決這個(gè)問(wèn)題。
創(chuàng)新互聯(lián)建站是一家專(zhuān)業(yè)提供阿拉爾企業(yè)網(wǎng)站建設(shè),專(zhuān)注與成都網(wǎng)站設(shè)計(jì)、做網(wǎng)站、HTML5建站、小程序制作等業(yè)務(wù)。10年已為阿拉爾眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專(zhuān)業(yè)網(wǎng)站設(shè)計(jì)公司優(yōu)惠進(jìn)行中。array_key_exists()函數(shù)判斷某個(gè)數(shù)組中是否存在指定的key,如果key存在,則返回true,否則返回flase
array_key_exists(key,array);
key:必需。規(guī)定鍵名
array:必需。規(guī)定輸入的數(shù)組
'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 查詢(xún)的東西都不一樣吧
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訪(fǎng)問(wèn)一個(gè)不存在索引數(shù)組值時(shí),不會(huì)引起一個(gè)E_NOTICE的php錯(cuò)誤消息;
4.array_key_exists 會(huì)調(diào)用get_defined_vars判斷數(shù)組變量是否存在,isset不用;
測(cè)試代碼:
'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";
看完上述內(nèi)容,你們掌握array_key_exists()函數(shù)怎么在php中使用的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!