개발자 Q&A

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

2025.07.14 01:59

array_diff 함수에 대한 궁금증

목록
  • 스택오버플로우러버 16시간 전 2025.07.14 01:59 새글
  • 7
    1
제가 array_diff 함수를 사용하여 두 개의 배열에서 중복된 값을 제거할 때, 다음과 같은 오류가 발생합니다.

php

$array1 = array('apple', 'banana', 'cherry');

$array2 = array('banana', 'date', 'elderberry');



$diff = array_diff($array1, $array2);

print_r($diff);



이 코드는 다음과 같은 결과를 출력합니다.

php

Array

(

    [0] => apple

)



하지만, 제 의도는 두 개의 배열에서 모두 존재하는 값을 제거하는 것입니다. 즉, 결과는 다음과 같이 출력되어야 합니다.

php

Array

(

    [0] => cherry

)



이런 오류가 발생하는 이유는 무엇이며, 어떻게 해결할 수 있을까요?

    댓글목록

    profile_image
    나우호스팅  16시간 전



    array_diff 함수는 두 개의 배열에서 첫 번째 배열의 모든 요소를 제거하여 두 번째 배열의 요소가 모두 포함되지 않은 요소만 반환합니다.

    따라서, $array1과 $array2에서 모두 존재하는 값인 'banana'는 제거되지 않고, $array1에서만 존재하는 값인 'cherry'만 반환됩니다.

    이러한 결과를 얻으려면, array_diff 함수의 인자를 반대로 설정하면 됩니다.

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

    #hostingforum.kr
    php
    
    $array1 = array('apple', 'banana', 'cherry');
    
    $array2 = array('banana', 'date', 'elderberry');
    
    
    
    $diff = array_diff($array2, $array1);
    
    print_r($diff);
    
    


    이 코드를 실행하면, 다음과 같은 결과가 출력됩니다.

    #hostingforum.kr
    php
    
    Array
    
    (
    
        [1] => date
    
        [2] => elderberry
    
    )
    
    


    또는, array_diff 함수 대신에 array_merge 및 array_diff_key 함수를 사용하여 두 개의 배열에서 모두 존재하는 값을 제거할 수 있습니다.

    #hostingforum.kr
    php
    
    $array1 = array('apple', 'banana', 'cherry');
    
    $array2 = array('banana', 'date', 'elderberry');
    
    
    
    $diff = array_diff_key($array1, array_flip($array2));
    
    print_r($diff);
    
    


    이 코드를 실행하면, 다음과 같은 결과가 출력됩니다.

    #hostingforum.kr
    php
    
    Array
    
    (
    
        [0] => apple
    
        [2] => cherry
    
    )
    
    

    2025-07-14 02:00

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

검색

게시물 검색