Computer >> 컴퓨터 >  >> 프로그래밍 >> PHP

PHP array_diff_assoc() 함수 – 배열의 키와 값을 함께 비교하는 방법

PHP의 array_diff_assoc() 함수는 배열의 키(key)와 값(value)을 모두 비교하여 두 배열 간의 차이점을 반환하는 함수입니다.

비슷한 함수인 array_diff()는 오직 값만 비교하는 반면, array_diff_assoc()키와 값의 쌍 전체를 기준으로 비교한다는 점이 가장 큰 차이입니다. 따라서 값이 같더라도 키가 다르면 서로 다른 요소로 판단됩니다.

문법(Syntax)

array_diff_assoc(arr1, arr2, arr3, arr4, …)

매개변수(Parameters)

  • arr1 − 비교의 기준이 되는 배열입니다. (필수)

  • arr2 − arr1과 비교할 대상 배열입니다. (필수)

  • arr3 − 추가로 비교하고 싶은 배열입니다. (선택)

  • arr4 − 추가로 비교하고 싶은 배열입니다. (선택)

필요하다면 세 번째, 네 번째 배열뿐 아니라 그 이상의 배열도 계속 추가하여 비교할 수 있습니다.

반환값(Return)

array_diff_assoc() 함수는 비교 결과를 배열 형태로 반환합니다. 구체적으로는 arr1에 있는 값 중에서, 다른 어떤 배열에도 (키와 값의 쌍이 일치하지 않아) 존재하지 않는 모든 값을 담은 배열을 반환합니다.

예제(Example)

<?php
   $arr1 = array("p"=>"football","q"=>"cricket","r"=>"hockey");
   $arr2 = array("s"=>"football","t"=>"cricket");
   $res = array_diff_assoc($arr1,$arr2);
   print_r($res);
?>

실행 결과(Output)

Array
(
   [p] => football
   [q] => cricket
   [r] => hockey
)

결과 해설

$arr1과 $arr2는 "football", "cricket"처럼 값 자체는 동일하지만, 키가 각각 "p", "q"와 "s", "t"로 서로 다릅니다. array_diff_assoc()는 키와 값을 함께 비교하기 때문에 키-값 쌍이 일치하는 요소가 하나도 없어, 결국 $arr1의 모든 요소가 그대로 반환된 것입니다.

만약 키까지 동일했다면(예: $arr2 = array("p"=>"football") ) 해당 요소는 결과에서 제외됩니다. 이 점이 값만 비교하는 array_diff()와 확연히 구분되는 부분이니, 실무에서 두 함수를 선택할 때 꼭 기억해 두세요.