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

PHP 배열에서 누락된 요소 찾기: array_diff 함수 활용 방법

PHP에서 array_diff 함수를 사용하면 배열에 누락된 요소들을 손쉽게 찾아낼 수 있습니다. 이 함수는 두 배열을 비교하여 첫 번째 배열에는 존재하지만 다른 배열에는 없는 값을 반환합니다.

구현 예제

아래 코드는 연속된 숫자 범위 내에서 빠진 값들을 찾아내는 absent 함수를 정의한 예제입니다.

<?php
    function absent($my_list)
    {
       $my_array = range(min($my_list), max($my_list));
       return array_diff($my_array, $my_list);
    }
    echo "첫 번째 배열에서 누락된 요소: ";
    print_r(absent(array(45, 48, 51, 52, 53, 56)));
    echo "두 번째 배열에서 누락된 요소: ";
    print_r(absent(array(99, 101, 104, 105)));
?>

실행 결과

첫 번째 배열에서 누락된 요소: Array
(
    [1] => 46
    [2] => 47
    [4] => 49
    [5] => 50
    [9] => 54
    [10] => 55
)
두 번째 배열에서 누락된 요소: Array
(
    [1] => 100
    [3] => 102
    [4] => 103
)

코드 동작 원리

이 프로그램의 핵심 로직은 다음과 같이 세 단계로 구성됩니다.

1단계: absent 함수가 입력 배열의 최솟값(min)과 최댓값(max)을 확인합니다.

2단계: range 함수를 사용하여 최솟값부터 최댓값까지의 모든 숫자를 포함하는 완전한 배열을 생성합니다.

3단계: array_diff 함수로 완전한 배열과 원본 배열의 차이를 계산하여, 원본 배열에서 빠져 있는 요소들만 반환합니다.

예를 들어, 첫 번째 배열 [45, 48, 51, 52, 53, 56]의 경우 범위는 45부터 56까지이며, 이 중 실제로 존재하지 않는 46, 47, 49, 50, 54, 55가 결과로 출력됩니다. 이 방식은 연속적인 숫자 시퀀스에서 결측값을 검증해야 할 때 특히 유용하며, 데이터 무결성 검사나 ID 시퀀스 점검 등에 활용할 수 있습니다.