복붙노트

isset와 array_key_exists의 차이점

PHP

isset와 array_key_exists의 차이점

다음 두 함수 호출을 비교하는 방법은 다음과 같습니다.

isset($a['key'])
array_key_exists('key', $a)

해결법

  1. ==============================

    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. ==============================

    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. ==============================

    3.배열에서 작업 할 때의 주요 차이점은 값이 null 일 때 array_key_exists가 true를 반환하고 배열 값이 null로 설정된 경우 isset이 false를 반환한다는 것입니다.

    배열에서 작업 할 때의 주요 차이점은 값이 null 일 때 array_key_exists가 true를 반환하고 배열 값이 null로 설정된 경우 isset이 false를 반환한다는 것입니다.

    PHP 문서 사이트에서 isset을 참조하십시오.

  4. ==============================

    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. ==============================

    5.PHP 함수 array_key_exists ()는 특정 키 또는 숫자 인덱스가 배열 요소에 존재하는지 여부를 결정합니다. 그러나 키가 존재하고 값과 연관되어 있는지 확인하려면 PHP 언어 구문 isset ()에서 값이 null이 아님을 알 수 있습니다. array_key_exists ()는 키 / 인덱스 값에 대한 정보를 반환 할 수 없습니다.

    PHP 함수 array_key_exists ()는 특정 키 또는 숫자 인덱스가 배열 요소에 존재하는지 여부를 결정합니다. 그러나 키가 존재하고 값과 연관되어 있는지 확인하려면 PHP 언어 구문 isset ()에서 값이 null이 아님을 알 수 있습니다. array_key_exists ()는 키 / 인덱스 값에 대한 정보를 반환 할 수 없습니다.

  6. ==============================

    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. ==============================

    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. ==============================

    8.두 개는 정확히 동일하지 않습니다. 나는 정확한 차이점을 기억하지 못했지만 배열의 키가 PHP에 존재 하는지를 판별하는 것이 무엇이 더 빠르며 더 잘했는지에 대해 잘 설명되어 있습니다.

    두 개는 정확히 동일하지 않습니다. 나는 정확한 차이점을 기억하지 못했지만 배열의 키가 PHP에 존재 하는지를 판별하는 것이 무엇이 더 빠르며 더 잘했는지에 대해 잘 설명되어 있습니다.

    공통적 인 합의는 가능할 때마다 isset을 사용하는 것으로 보이는데, 이는 언어 구조이므로 더 빠릅니다. 그러나 차이점은 위에 설명되어 있습니다.

  9. from https://stackoverflow.com/questions/3210935/difference-between-isset-and-array-key-exists by cc-by-sa and MIT license