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