이 기사의 예에서는 PHP에서 isset과 array_key_exists의 차이점을 설명합니다. 참고할 수 있도록 모든 사람과 공유하세요. 구체적인 분석은 다음과 같습니다.
1. 배열 값의 판단이 다릅니다. 값이 null이거나 '' 또는 false인 경우 isset은 false를 반환하고 array_key_exists는 true를 반환합니다.
2. 실행 효율성이 다릅니다. isset은 내장 연산자이고, array_key_exists는 PHP 내장 함수이며 isset이 더 빠릅니다. 참고: PHP 함수 구현 원리 및 성능 분석3. 존재하지 않는 인덱스 배열 값에 액세스하기 위해 isset을 사용할 때 E_NOTICE PHP 오류 메시지가 발생하지 않습니다.
4.array_key_exists는 get_define_vars를 호출하여 배열 변수가 존재하는지 확인하고 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 $time\n"; for($i=0;$i<10000;$i++){ isset($test_arr['aa']); } $time_end = microtime_float(); $time = $time_end - $time_start; echo "isset 10000 is $time\n"; for($i=0;$i<1000000;$i++){ isset($test_arr['aa']); } $time_end = microtime_float(); $time = $time_end - $time_start; echo "isset 1000000 is $time\n"; //++++++++++++++++++++++++++++++ $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 $time\n"; 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 $time\n"; 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 $time\n";