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

PHP Foreach 루프와 if 조건문으로 두 배열의 일치하는 값 찾기

PHP 프로그래밍을 하다 보면 두 개의 배열을 비교하여 서로 일치하는 값을 찾아야 하는 경우가 자주 발생합니다. 이번 글에서는 foreach 루프if 조건문을 활용해 두 배열 사이의 공통 값을 찾는 방법을 알아보겠습니다.

예제 배열 준비하기

먼저 다음과 같이 두 개의 배열이 있다고 가정해 보겠습니다.

$firstArray = array(10, 20, 30, 40, 50);
$secondArray = array(100, 80, 30, 40, 90);

위 두 배열에서 서로 일치하는 값을 찾으면 결과는 다음과 같아야 합니다.

30
40

Foreach 루프로 구현하는 방법

두 배열의 모든 요소를 서로 비교하려면 중첩 foreach 루프를 사용합니다. 바깥쪽 루프가 첫 번째 배열의 각 요소를 순회하고, 안쪽 루프가 두 번째 배열의 각 요소와 하나씩 비교합니다. 이때 if 조건문으로 두 값이 같은지 검사하고, 일치하면 해당 값을 출력하면 됩니다.

전체 코드는 다음과 같습니다.

<!DOCTYPE html>
<html>
<body>
<?php
$firstArray = array(10, 20, 30, 40, 50);
$secondArray = array(100, 80, 30, 40, 90);

foreach($firstArray as $f) {
    foreach($secondArray as $s) {
        if($f == $s) {
            echo "일치하는 값 = ", $f, "<br>";
        }
    }
}
?>
</body>
</html>

코드 동작 원리

1. 바깥쪽 foreach 루프가 $firstArray의 요소(10, 20, 30, 40, 50)를 하나씩 가져옵니다.
2. 안쪽 foreach 루프가 $secondArray의 요소(100, 80, 30, 40, 90)를 순회하며 비교합니다.
3. if 조건문($f == $s)이 참이면, 즉 두 값이 일치하면 화면에 결과를 출력합니다.

실행 결과

위 코드를 실행하면 다음과 같은 출력 결과를 얻을 수 있습니다.

일치하는 값 = 30
일치하는 값 = 40

참고: array_intersect() 함수 활용

중첩 루프 대신 PHP 내장 함수인 array_intersect()를 사용하면 더 간결하게 처리할 수도 있습니다.

$result = array_intersect($firstArray, $secondArray);
print_r($result);

이 함수는 두 배열의 공통 값을 포함하는 새로운 배열을 반환하므로, 성능 면에서도 대용량 데이터를 다룰 때 유리합니다. 다만 학습 목적이나 로직 제어가 필요한 경우에는 위에서 소개한 foreach + if 방식이 유용합니다.