isset와 array_key_exists의 차이점
PHPisset와 array_key_exists의 차이점
다음 두 함수 호출을 비교하는 방법은 다음과 같습니다.
isset($a['key'])
array_key_exists('key', $a)
해결법
-
==============================
1.array_key_exists는 키가 배열에 존재하는 경우 확실히 알려주지 만, isset은 키 / 변수가 존재하고 null이 아닌 경우에만 true를 반환합니다.
array_key_exists는 키가 배열에 존재하는 경우 확실히 알려주지 만, isset은 키 / 변수가 존재하고 null이 아닌 경우에만 true를 반환합니다.
$a = array('key1' => 'フーバー', 'key2' => null); isset($a['key1']); // true array_key_exists('key1', $a); // true isset($a['key2']); // false array_key_exists('key2', $a); // true
또 다른 중요한 차이점이 있습니다. array_key_exists는 $ a가 없으면 isset은 불평하지 않습니다.
-
==============================
2.array_key_exists와 isset 사이에 둘 다 매우 빠르지 만 [O (1)], isset은 상당히 빠릅니다. 이 검사가 수천 번 발생하면 isset을 사용하는 것이 좋습니다.
array_key_exists와 isset 사이에 둘 다 매우 빠르지 만 [O (1)], isset은 상당히 빠릅니다. 이 검사가 수천 번 발생하면 isset을 사용하는 것이 좋습니다.
그러나 배열 키가 존재하지만 값이 null이면 isset은 false를 반환하고 array_key_exists는 true를 반환합니다. 값이 null의 경우, array_key_exists를 사용할 필요가 있습니다.
-
==============================
3.배열에서 작업 할 때의 주요 차이점은 값이 null 일 때 array_key_exists가 true를 반환하고 배열 값이 null로 설정된 경우 isset이 false를 반환한다는 것입니다.
배열에서 작업 할 때의 주요 차이점은 값이 null 일 때 array_key_exists가 true를 반환하고 배열 값이 null로 설정된 경우 isset이 false를 반환한다는 것입니다.
PHP 문서 사이트에서 isset을 참조하십시오.
-
==============================
4.대답이 없다는 낡은 질문에 대한 대답은 '경고'문제를 해결하는 것 같습니다 (설명은 다음과 같습니다)
대답이 없다는 낡은 질문에 대한 대답은 '경고'문제를 해결하는 것 같습니다 (설명은 다음과 같습니다)
기본적으로 키가 배열에 존재하는지 확인하는 경우, isset
및 array_key_exists
변수에 null 값이있는 키가 있는지 확인하려면 어떻게해야합니까?
그 가치가 null 일 때 기존의 키를 놓치지 않고 경고를받지 않고 (PHP 개발자의 생각은 흥미로운 질문이 될 수 있지만 SO와 관련이 없다). 그리고 물론 우리는 @
isset($var[$key]); // silent but misses null values array_key_exists($key, $var); // works but warning if $var not defined/array
is_array가 방정식에 포함되어 있어야하지만 $ var가 정의되어 있지 않으면 경고가 표시되어 해결책이 될 수 있습니다.
if (isset($var[$key]) || isset($var) && is_array($var) && array_key_exists($key, $var)) ...
테스트가 주로 Null 값이 아닌 경우 더 빠를 가능성이 높습니다. 그렇지 않으면 대부분 null 값을 갖는 배열
if (isset($var) && is_array($var) && array_key_exists($key, $var)) ...
그 일을 할 것이다.
-
==============================
5.PHP 함수 array_key_exists ()는 특정 키 또는 숫자 인덱스가 배열 요소에 존재하는지 여부를 결정합니다. 그러나 키가 존재하고 값과 연관되어 있는지 확인하려면 PHP 언어 구문 isset ()에서 값이 null이 아님을 알 수 있습니다. array_key_exists ()는 키 / 인덱스 값에 대한 정보를 반환 할 수 없습니다.
PHP 함수 array_key_exists ()는 특정 키 또는 숫자 인덱스가 배열 요소에 존재하는지 여부를 결정합니다. 그러나 키가 존재하고 값과 연관되어 있는지 확인하려면 PHP 언어 구문 isset ()에서 값이 null이 아님을 알 수 있습니다. array_key_exists ()는 키 / 인덱스 값에 대한 정보를 반환 할 수 없습니다.
-
==============================
6.함수 isset ()이 더 빠릅니다. http://www.php.net/manual/en/function.array-key-exists.php#82867을 확인하십시오.
함수 isset ()이 더 빠릅니다. http://www.php.net/manual/en/function.array-key-exists.php#82867을 확인하십시오.
-
==============================
7.@ 연산자를 사용하여 @deceze 응답을 보완하고 (대수적인 호기심으로) @를 사용하는 것이 더 나은 경우를 나타냅니다. 로그 및 미세한 성능 최적화가 필요하지 않은 경우에는별로 좋지 않습니다.
@ 연산자를 사용하여 @deceze 응답을 보완하고 (대수적인 호기심으로) @를 사용하는 것이 더 나은 경우를 나타냅니다. 로그 및 미세한 성능 최적화가 필요하지 않은 경우에는별로 좋지 않습니다.
$a = array('k1' => 'HELLO', 'k2' => null, 'k3' => '', 'k4' => 0); print isset($a['k1'])? "OK $a[k1].": 'NO VALUE.'; // OK print array_key_exists('k1', $a)? "OK $a[k1].": 'NO VALUE.'; // OK print @$a['k1']? "OK $a[k1].": 'NO VALUE.'; // OK // outputs OK HELLO. OK HELLO. OK HELLO. print isset($a['k2'])? "OK $a[k2].": 'NO VALUE.'; // NO print array_key_exists('k2', $a)? "OK $a[k2].": 'NO VALUE.'; // OK print @$a['k2']? "OK $a[k2].": 'NO VALUE.'; // NO // outputs NO VALUE. OK . NO VALUE. print isset($a['k3'])? "OK $a[k3].": 'NO VALUE.'; // OK print array_key_exists('k3', $a)? "OK $a[k3].": 'NO VALUE.'; // OK print @$a['k3']? "OK $a[k3].": 'NO VALUE.'; // NO // outputs OK . OK . NO VALUE. print isset($a['k4'])? "OK $a[k4].": 'NO VALUE.'; // OK print array_key_exists('k4', $a)? "OK $a[k4].": 'NO VALUE.'; // OK print @$a['k4']? "OK $a[k4].": 'NO VALUE.'; // NO // outputs OK 0. OK 0. NO VALUE
추신 : 당신은 / 수정 /이 텍스트를 보완 수정할 수 있습니다, 그것은 위키입니다.
-
==============================
8.두 개는 정확히 동일하지 않습니다. 나는 정확한 차이점을 기억하지 못했지만 배열의 키가 PHP에 존재 하는지를 판별하는 것이 무엇이 더 빠르며 더 잘했는지에 대해 잘 설명되어 있습니다.
두 개는 정확히 동일하지 않습니다. 나는 정확한 차이점을 기억하지 못했지만 배열의 키가 PHP에 존재 하는지를 판별하는 것이 무엇이 더 빠르며 더 잘했는지에 대해 잘 설명되어 있습니다.
공통적 인 합의는 가능할 때마다 isset을 사용하는 것으로 보이는데, 이는 언어 구조이므로 더 빠릅니다. 그러나 차이점은 위에 설명되어 있습니다.
from https://stackoverflow.com/questions/3210935/difference-between-isset-and-array-key-exists by cc-by-sa and MIT license
'PHP' 카테고리의 다른 글
쿠키 제거 (0) | 2018.09.11 |
---|---|
PHP - SSL 인증서 오류 : 로컬 발급자 인증서를 가져올 수 없습니다. (0) | 2018.09.11 |
문자열의 처음 n 문자 가져 오기 (0) | 2018.09.11 |
간단한 XML - 노드에서 콜론 다루기 (0) | 2018.09.11 |
echo 문 내부를 차단한다면? (0) | 2018.09.11 |