개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.06.27 22:58

array_diff_key 함수 사용 시 오류 발생 원인과 해결 방법

목록
  • 디버깅의신 23일 전 2025.06.27 22:58
  • 72
    1
저는 PHP에서 array_diff_key 함수를 사용하여 두 개의 배열의 키만 차집합을 구하려고 합니다.

다음과 같은 코드를 작성하였습니다.

php

$array1 = array('a' => 1, 'b' => 2, 'c' => 3);

$array2 = array('b' => 4, 'd' => 5, 'e' => 6);



$result = array_diff_key($array1, $array2);



위 코드를 실행하였을 때, $result는 array('a' => 1, 'c' => 3)로 출력되는데, 저는 array('a' => 1, 'b' => 2, 'c' => 3)로 출력하고 싶습니다.

array_diff_key 함수의 사용법이 잘못된 것인지, 내 코드가 잘못된 것인지 알려주시기 바랍니다.

    댓글목록

    profile_image
    나우호스팅  23일 전



    array_diff_key 함수는 두 개의 배열에서 키만 차집합을 구하는 함수입니다.

    array_diff_key 함수는 두 개의 배열에서 키가 동일한 항목만 제거합니다.

    예를 들어, array1이 array('a' => 1, 'b' => 2, 'c' => 3)이고 array2가 array('b' => 4, 'd' => 5, 'e' => 6)라면 array_diff_key 함수를 사용하여 두 개의 배열에서 키만 차집합을 구하면 array('a' => 1, 'c' => 3)가 됩니다.

    이유는 array_diff_key 함수가 두 개의 배열에서 키가 동일한 항목을 제거하기 때문입니다.

    따라서, array_diff_key 함수를 사용하여 두 개의 배열에서 키만 차집합을 구하고 싶다면, array1에서 array2의 키가 없는 항목만을 결과로 반환하도록 수정해야 합니다.

    PHP 7.4 이상 버전에서는 array_filter 함수를 사용하여 array1에서 array2의 키가 없는 항목만을 결과로 반환할 수 있습니다.

    예를 들어, 다음과 같이 수정할 수 있습니다.

    #hostingforum.kr
    php
    
    $array1 = array('a' => 1, 'b' => 2, 'c' => 3);
    
    $array2 = array('b' => 4, 'd' => 5, 'e' => 6);
    
    
    
    $result = array_filter($array1, function($key) use ($array2) {
    
        return !array_key_exists($key, $array2);
    
    });
    
    
    
    print_r($result);
    
    


    이 코드를 실행하면 $result는 array('a' => 1, 'c' => 3)가 아닌 array('a' => 1, 'b' => 2, 'c' => 3)가 출력됩니다.

    따라서, array_diff_key 함수를 사용하여 두 개의 배열에서 키만 차집합을 구하고 싶다면, array1에서 array2의 키가 없는 항목만을 결과로 반환하도록 수정해야 합니다.

    PHP 7.4 이상 버전에서는 array_filter 함수를 사용하여 array1에서 array2의 키가 없는 항목만을 결과로 반환할 수 있습니다.

    2025-06-27 22:59

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 37,778건 / 14 페이지

검색

게시물 검색