array_intersect_assoc()
함수의 사용법
array_intersect_assoc()
함수는
비교 대상이 되는 배열의 키와 값을 기준으로 한 개 이상의 다른 배열들의 요소들 중에서 공통(intersect, 교집합)으로 존재하는 요소들을 찾아
연관(associative) 배열로 반환하는 함수입니다.
array_intersect_assoc()
함수의 형식은 다음과 같습니다.
구문
매개변수
$array_1 |
필수. 비교 대상으로 하는 배열입니다. |
---|---|
$array_2 |
필수(PHP 8.0.0 버전부터는 옵션). 첫 번째 배열을 비교 대상으로 하는 배열입니다.
PHP 8.0.0 버전부터의 변경 사항을 참조하세요. |
$array_3, ... |
옵션. 첫 번째 배열을 비교 대상으로 하는 배열에 비교 대상을 더 추가한 배열로 여러 배열을 추가할 수 있습니다. |
반환 값
비교 대상이 되는 배열의 키와 값을 기준으로 한 개 이상의 다른 배열들의 요소들 중에서 공통으로 존재하는 요소들을 찾아, 연관 배열로 반환합니다.
만약에 공통으로 존해하는 요소가 없을 경우 빈 배열을 반환합니다.
PHP 8.0.0 버전부터의 변경 사항
PHP 8.0.0부터는 array_intersect_assoc()
함수를 단 하나의 매개변수만 사용하여 호출할 수 있게 되었습니다.
이전에는 최소 두 개의 매개변수가 필요했습니다.
- PHP 8.0.0 버전 이전에는 항상 적어도 두 개의 배열을 매개변수로 전달해야 합니다.
- PHP 8.0.0 버전부터는 단 하나의 배열만 전달할 수도 있음을 의미합니다.
위의 예시 코드를 보면 $array
배열에는 "a" 키에 1이라는 값이 두 번 포함되어 있습니다. 그러나, 키와 값이 모두 일치하는 요소는 하나만 존재합니다. 따라서, array_intersect_assoc()
함수는 키와 값이 모두 일치하는 "a" 키의 값인 1만을 반환합니다.
즉, PHP 8.0.0 버전부터의 array_intersect_assoc()
함수에서 매개변수가 하나일 경우에는 중복된 요소를 제거하는 기능을 제공합니다.
PHP 8.0.0 버전 이전에서 연관 배열의 중복된 요소를 제거하려면 array_unique()
함수를 사용할 수 있습니다.
주의할 점 - 배열 값에서 데이터 형식을 고려하지 않음
array_intersect_assoc()
함수는 값만을 비교하며 데이터 형식을 고려하지 않습니다. 예시 코드를 통해 설명하겠습니다.
위의 코드에서 $array1
과 $array2
는 값 '3'을 포함하고 있지만, 데이터 형식이 서로 다릅니다. array_intersect_assoc()
함수는 키와 값을 비교할 때 값의 데이터 형식을 고려하지 않습니다.
활용 예제
주로 다음과 같은 용도로 사용됩니다.
이 함수는 여러 연관 배열 사이에서 공통 요소를 찾아내는 데에 사용됩니다. 이 특성을 활용하여 연관 배열에서 특정 요소을 추출하거나, 다른 배열과 비교하여 같은 요소를 찾는 데에도 활용됩니다.
- 데이터 검색 및 필터링
- 데이터 일치 여부 확인
- 연관된 데이터 처리
데이터 검색 및 필터링
여러 데이터 배열이 있을 때 특정 키와 값이 공통으로 존재하는 요소를 찾아내어 데이터를 검색하거나 필터링할 수 있습니다.
다음은 상품 정보를 담고 있는 배열들이 있고, 사용자가 선택한 필터 조건이 주어진다고 가정해봅시다. 사용자가 선택한 필터에 해당하는 상품들을 찾아내는 예제입니다.
이 결과에서 보듯이, 사용자가 선택한 필터 조건에 해당하는 상품이 배열로 출력되었습니다. 선택한 브랜드가 "Samsung"이고 가격이 800인 상품이 존재하기 때문에 이 상품이 결과 배열에 포함되었습니다.
데이터 일치 여부 확인
두 개 이상의 배열에서 특정 키와 값이 동시에 일치하는지 확인할 때 사용될 수 있습니다.
다음은 두 개의 배열에서 동일한 키와 값이 있는지 확인하는 예제입니다.
이 코드에서는 두 사용자의 정보를 배열로 표현하고, has_matching_info
함수를 사용하여 두 배열 간에 동일한 키와 값이 있는지 확인합니다. 그리고 그 결과에 따라 메시지를 출력합니다.
연관된 데이터 처리
여러 데이터 배열에서 특정 연관된 키와 값이 동시에 존재하는 경우, 이를 기반으로 데이터를 처리하거나 조작할 수 있습니다.
다음은 사용자들의 주문 데이터가 있는 상황에서, 두 사용자의 주문 중에서 동일한 제품을 주문한 경우를 확인하는 코드 예제입니다.
이 코드에서는 find_matching_products
함수를 사용하여 두 사용자의 주문 중에서 동일한 제품을 찾습니다. 결과에 따라 사용자가 동일한 제품을 주문했는지 여부를 출력합니다. 이 코드는 간단한 주문 데이터를 활용하여 두 사용자 간에 어떤 제품을 공통으로 주문했는지 확인하는 예시입니다.
같이 보기
- PHP array_intersect() 함수 - 다른 배열과의 공통 값 찾기
- PHP array_diff() 함수 - 다른 배열에 없는 값 찾기
- PHP array_diff_assoc() 함수 - 키를 기준으로 다른 배열에 없는 값 찾기
- PHP in_array() 함수 - 배열에 특정 값이 있는지 확인
- PHP foreach() 반복문 사용법 및 활용 예제
- PHP array_map() 함수 – 개념 정리 및 사용 예제
- PHP array_filter() 함수 - 개념 정리 및 사용 예제
- PHP array_search() 함수 - 개념 정리 및 사용 예제
- PHP array_values() 함수 - 배열 값 목록 가져오기