array_diff_assoc()
함수의 사용법
array_diff_assoc()
함수는
두 개 이상의 배열들의 키를 기준으로 값의 차이(difference)를 비교하여,
다른 배열에는 없고 첫 번째 배열에만 있는 키와 값으로 구성된 연관(associative) 배열을 반환하는 함수입니다.
이 함수는 연관 배열에서 키를 기준으로 다른 배열에 없는 값을 찾는데 사용되며,
이 특성을 활용하여 연관 배열에서 특정 요소을 제거하는 데에도 활용됩니다.
주로 다음과 같은 용도로 사용됩니다.
- 연관 배열들의 중복된 요소를 제거하기
- 연관 배열 간의 차이 확인
- 특정 요소를 연관 배열에서 제거
array_diff_assoc()
함수는 키를 기준으로 다른 배열에 없는 값을 찾는데 사용하지만
array_diff()
함수는 키와는 무관하게 값만을 비교하여 다른 배열에 없는 값을 찾는데 사용합니다.
함수 | 차이점 |
---|---|
array_diff_assoc() |
배열의 키와 값을 모두 비교합니다. |
array_diff() |
배열의 키를 고려하지 않고 값만 비교합니다. |
array_diff_assoc()
함수의 형식은 다음과 같습니다.
구문
매개변수
$array_1 |
필수. 비교 대상으로 하는 배열입니다. |
---|---|
$array_2 |
필수(PHP 8.0.0 버전부터는 옵션). 첫 번째 배열을 비교 대상으로 하는 배열입니다.
PHP 8.0.0 버전부터의 변경 사항을 참조하세요. |
$array_3, ... |
옵션. 첫 번째 배열을 비교 대상으로 하는 배열에 비교 대상을 더 추가한 배열로 여러 배열을 추가할 수 있습니다. |
반환 값
두 개 이상의 배열들의 키를 기준으로 값의 차이를 비교하여 다른 배열에는 없고 비교 대상이 되는 첫 번째 배열에만 있는 키와 값으로 구성된 연관 배열을 반환합니다.
만약에 키를 기준으로 비교하는 다른 배열과 첫 번째 배열에만 있는 값이 없을 경우에는 빈 배열을 반환합니다.
PHP 8.0.0 버전부터의 변경 사항
PHP 8.0.0부터는 array_diff_assoc()
함수를 단 하나의 매개변수만 사용하여 호출할 수 있게 되었습니다.
이전에는 최소 두 개의 매개변수가 필요했습니다.
- PHP 8.0.0 버전 이전에는 항상 적어도 두 개의 배열을 매개변수로 전달해야 합니다.
- PHP 8.0.0 버전부터는 단 하나의 배열만 전달할 수도 있음을 의미합니다.
array_diff_assoc()
함수에서 배열의 키(key)는 유일해야 하기 때문에 중복된 키는 허용되지 않습니다. 따라서 여러 키가 동일한 값을 가진 경우, 마지막으로 선언된 키가 이전에 선언된 동일한 키를 덮어씁니다.
이러한 이유로 $array1
의 정의에서 'b' => 2
가 두 번 나타나는데, 최종적으로는 마지막 'b' => 2
가 사용되고 이전 것은 덮어씌워집니다. 그래서 array_diff_assoc()
함수를 사용하면 중복된 키를 제거하고 마지막으로 선언된 값을 유지합니다. 결과적으로는 중복된 키가 제거된 배열이 출력됩니다.
하나의 배열 내부의 중복 값을 제거하거나 유일한 값을 추출하려면 array_unique()
함수를 사용하여 다음과 같이 할 수 있습니다.
주의할 점 - 배열 값에서 데이터 형식을 고려하지 않음
array_diff_assoc()
함수는 값만을 비교하며 데이터 형식을 고려하지 않습니다. 예시 코드를 통해 설명하겠습니다.
위의 코드에서 $array1
과 $array2
는 값 '3'을 포함하고 있지만, 데이터 형식이 서로 다릅니다. array_diff_assoc()
함수는 키와 값을 비교할 때 값의 데이터 형식을 고려하지 않습니다. 따라서 데이터 형식이 다르더라도 차이를 감지하지 않고, 이 경우에는 빈 배열이 반환됩니다.
활용 예제
array_diff_assoc()
함수는 실전에서 다양한 상황에서 활용될 수 있습니다. 아래는 몇 가지 실전적인 예시들입니다.
권한 체크
위 예제에서는 사용자의 권한과 필요한 권한을 비교하여 부족한 권한을 확인합니다.
선택된 옵션 제외하기
사용자가 선택한 옵션을 기준으로 모든 옵션 중에서 선택하지 않은 옵션을 찾아냅니다.
버전 관리 시스템에서 변경된 파일 찾기
버전 관리 시스템에서 변경된 파일 목록과 커밋된 파일 목록을 비교하여 새로운 파일을 찾습니다.
이러한 예시들은 array_diff_assoc()
함수를 통해 다양한 상황에서 연간 배열 간의 차이를 찾고, 원하는 조작을 할 수 있음을 보여줍니다. 함수를 적절히 활용하여 간편하게 연관 배열을 처리할 수 있습니다.
같이 보기
- PHP array_diff() 함수 - 다른 배열에 없는 값 찾기
- PHP array_intersect() 함수 - 다른 배열과의 공통 값 찾기
- PHP array_intersect_assoc() 함수 - 키와 값을 기준으로 다른 배열과의 공통 요소 찾기
- PHP in_array() 함수 - 배열에 특정 값이 있는지 확인
- PHP foreach() 반복문 사용법 및 활용 예제
- PHP array_map() 함수 – 개념 정리 및 사용 예제
- PHP array_filter() 함수 - 개념 정리 및 사용 예제
- PHP array_search() 함수 - 개념 정리 및 사용 예제
- PHP array_values() 함수 - 배열 값 목록 가져오기