array_intersect()
함수의 사용법
array_intersect()
함수는
비교 대상이 되는 배열과 한 개 이상의 다른 배열들의 공통(intersect, 교집합) 값을 찾아 배열로 반환하는 함수입니다.
이 함수는 배열들 간의 공통된 값을 비교할 때 활용되며, 주로 다음과 같은 용도로 사용됩니다.
- 두 개의 배열에서 공통으로 존재하는 값을 찾기
- 사용자가 입력한 값이 이미 존재하는지 확인하기
- 데이터베이스에서 중복된 값을 제거하기
알아두세요!
array_intersect()
함수로 반환된 배열의 키는 비교 대상이 되는 원래 배열에서의 키가 그대로 보존됩니다.
array_intersect()
함수의 형식은 다음과 같습니다.
구문
매개변수
$array_1 |
필수. 비교 대상으로 하는 배열입니다. |
---|---|
$array_2 |
필수(PHP 8.0.0 버전부터는 옵션). 첫 번째 배열을 비교 대상으로 하는 배열입니다.
PHP 8.0.0 버전부터의 변경 사항을 참조하세요. |
$array_3, ... |
옵션. 첫 번째 배열을 비교 대상으로 하는 배열에 비교 대상을 더 추가한 배열로 여러 배열을 추가할 수 있습니다. |
반환 값
비교 대상이 되는 배열과 한 개 이상의 다른 배열들의 공통 값을 찾아 배열로 반환합니다.
이때 반환된 배열의 키는 비교 대상이 되는 원래 배열에서의 키가 그대로 보존됩니다.
만약 비교하는 다른 배열과 비교 대상이 되는 첫 번째 배열에서 공통으로 존재하는 값이 없을 경우에는 빈 배열을 반환합니다.
PHP 8.0.0 버전부터의 변경 사항
PHP 8.0.0부터는 array_intersect()
함수를 단 하나의 매개변수만 사용하여 호출할 수 있게 되었습니다.
이전에는 최소 두 개의 매개변수가 필요했습니다.
- PHP 8.0.0 버전 이전에는 항상 적어도 두 개의 배열을 매개변수로 전달해야 합니다.
- PHP 8.0.0 버전부터는 단 하나의 배열만 전달할 수도 있음을 의미합니다.
위의 예시 코드를 보면 $uniqueValues
는 $array
배열 전체를 그대로 반환합니다.
array_intersect()
함수가 최소 두 개의 배열을 비교하여 교집합을 찾는데, 하나의 배열만 전달될 경우 그 배열 자체를 반환하기 때문입니다. 정확한 교집합을 찾기 위해서는 최소한 두 개의 배열이 필요합니다.
하나의 배열에 중복되는 값을 반환하려면 다음과 같이 할 수 있습니다.
위 코드에서 array_count_values()
함수를 사용하여 값의 횟수를 계산하고, array_filter()
함수를 사용하여 횟수가 1보다 큰 값을 찾아냅니다. 마지막으로 array_keys()
함수를 사용하여 중복된 값의 배열을 반환합니다. 이러한 방식으로 중복된 값을 반환할 수 있습니다.
주의할 점
array_intersect()
함수 사용 시 주의할 점을 살펴보겠습니다.
연관 배열에서의 키와 값 비교
array_intersect()
함수는 값만을 비교하므로, 연관 배열에서 키가 다르고 값만 일치하는 경우에는 그 값을 공통값으로 취급하게 됩니다. 이로 인해 연관 배열에서 주의해야 할 점이 발생할 수 있습니다.
위의 코드에서 array_intersect()
함수는 값만을 비교하여 $array1
와 동일한 키와 값을 반환합니다.
이는 키가 다르더라도 값이 일치하는 경우에는 해당 값을 결과 배열에 포함시킵니다.
키와 값이 모두 일치하는 경우를 찾으려면 array_intersect_assoc()
함수를 사용하세요.
배열 값에서 데이터 형식을 고려하지 않음
array_intersect()
함수는 값만을 비교하며 데이터 형식을 고려하지 않습니다. 예시 코드를 통해 설명하겠습니다.
위의 코드에서 $array1
과 $array2
는 값 '3'을 포함하고 있지만, 데이터 형식이 서로 다릅니다. array_intersect()
함수는 값만을 비교하며 데이터 형식을 고려하지 않습니다.
활용 예제
array_intersect()
함수는 실전에서 다양한 상황에서 활용될 수 있습니다. 아래는 몇 가지 실전적인 예시들입니다.
데이터베이스의 중복 추출하기
위 예시에서는 데이터베이스에서 가져온 사용자 ID 배열과 선택된 사용자 ID 배열 간의 공통된 값을 찾아냅니다.
양식 입력의 유효성 검사
위 예시에서는 사용자가 제출한 태그 배열과 허용된 태그 배열 간의 공통된 값을 찾아냅니다. 이를 통해 양식 입력의 유효성을 검사할 수 있습니다.
사용자 권한 관리
위 예시에서는 관리자와 사용자 간의 공통된 권한을 찾아냅니다. 이를 통해 사용자에게 부여될 수 있는 최대 권한을 식별할 수 있습니다.
상품 재고 관리
위 예시에서는 재고에 있는 상품과 선택된 상품 간의 공통된 값을 찾아냅니다. 이를 통해 재고에 있는 상품만 선택할 수 있습니다.
array_intersect()
함수를 활용하면 다양한 상황에서 배열 간의 공통된 값들을 효과적으로 관리하고 활용할 수 있습니다.
같이 보기
- PHP array_intersect_assoc() 함수 - 키와 값을 기준으로 다른 배열과의 공통 요소 찾기
- PHP array_diff() 함수 - 다른 배열에 없는 값 찾기
- PHP array_diff_assoc() 함수 - 키를 기준으로 다른 배열에 없는 값 찾기
- PHP in_array() 함수 - 배열에 특정 값이 있는지 확인
- PHP foreach() 반복문 사용법 및 활용 예제
- PHP array_map() 함수 – 개념 정리 및 사용 예제
- PHP array_filter() 함수 - 개념 정리 및 사용 예제
- PHP array_search() 함수 - 개념 정리 및 사용 예제
- PHP array_values() 함수 - 배열 값 목록 가져오기