중간에 빠져 나오지 않았기 때문에이 질문에 2 센트를 추가하고 싶었습니다.
이미 말했듯 isset()
이 키의 값을 평가하므로 false
해당 값이 배열에 키가 있는지 확인하는 null
위치 인 경우 반환 됩니다 array_key_exists()
.
PHP 7을 사용하여 간단한 벤치 마크를 실행했습니다. 결과는 반복을 완료하는 데 걸린 시간입니다.
$a = [null, true];
isset($a[0]) # 0.3258841 - false
isset($a[1]) # 0.28261614 - true
isset($a[2]) # 0.26198816 - false
array_key_exists(0, $a) # 0.46202087 - true
array_key_exists(1, $a) # 0.43063688 - true
array_key_exists(2, $a) # 0.37593913 - false
isset($a[0]) || array_key_exists(0, $a) # 0.66342998 - true
isset($a[1]) || array_key_exists(1, $a) # 0.28389215 - true
isset($a[2]) || array_key_exists(2, $a) # 0.55677581 - false
array_key_isset(0, $a) # 1.17933798 - true
array_key_isset(1, $a) # 0.70253706 - true
array_key_isset(2, $a) # 1.01110005 - false
이 벤치 마크에이 사용자 정의 함수의 결과를 추가하고 완료했습니다.
function array_key_isset($k, $a){
return isset($a[$k]) || array_key_exists($k, $a);
}
보았 듯이 이미 말한 것처럼 isset()
가장 빠른 방법이지만 값이 인 경우 false를 반환 할 수 있습니다 null
. 이것은 원치 않는 결과를 낳을 수 있으며 보통 array_key_exists()
그러한 경우에 사용해야 합니다.
그러나 중간 방법이 있으며을 사용하고 isset() || array_key_exists()
있습니다. 이 코드는 일반적으로 빠르게 기능을 사용 isset()
하고 있는 경우 isset()
false를 반환 에만 다음 사용 array_key_exists()
의 유효성을 검사. 위의 표에 표시된 것처럼 평소와 같이 빠릅니다 isset()
.
예, 함수에 작성하고 배치하는 것이 조금 더 느리지 만 훨씬 느립니다. 성능, 빅 데이터 확인 등을 위해 이것이 필요한 경우에는 전체 데이터를 쓰십시오. 그렇지 않으면 1 회 사용으로 매우 작은 오버 헤드 array_key_isset()
가 무시할 수 있습니다.