현재 위치: > 최신 기사 목록> Array_Diff ()를 사용하여 데이터베이스 데이터와 비교하여 예외 레코드를 찾으십시오.

Array_Diff ()를 사용하여 데이터베이스 데이터와 비교하여 예외 레코드를 찾으십시오.

M66 2025-05-17

Array_Diff () 는 PHP의 배열 함수로, 두 개 이상의 배열을 비교하고 다른 배열에 있지 않은 첫 번째 배열에서 값을 반환합니다. 이 기능은 배열을 비교합니다.

문법:

 array_diff(array $array1, array $array2, array ...$arrays): array
  • $ array1 : 첫 번째 배열 (비교에 사용 된 벤치 마크 배열).

  • $ array2, ... $ 배열 : 기타 배열, 다중 배열은 매개 변수로 비교할 수 있습니다.

이 함수는 $ array1 에 표시되지만 $ array2 및 기타 배열에는없는 모든 요소를 ​​포함하는 배열을 반환합니다.

2. 문제 해결 배경

사용자의 이메일 주소를 저장하는 데이터베이스가 있다고 가정합니다. 업로드 된 사서함 목록을 Array_Diff () 함수를 통해 데이터베이스의 사서함과 비교하여 데이터베이스, 즉 예외 레코드에서 업로드되지 않은 사서함 레코드를 신속하게 찾을 수 있기를 바랍니다.

3. 데이터베이스 연결 및 쿼리

먼저 데이터베이스가 user_db 로 지명되었다고 가정하고 데이터베이스 연결을 설정하고 테이블 사용자 가 있으며 사용자의 사서함을 저장할 필드 이메일이 있습니다.

 <?php
// 데이터베이스 연결 정보
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "user_db";

// 연결을 만듭니다
$conn = new mysqli($servername, $username, $password, $dbname);

// 연결을 확인하십시오
if ($conn->connect_error) {
    die("연결이 실패했습니다: " . $conn->connect_error);
}

// 데이터베이스의 모든 사서함을 쿼리하십시오
$sql = "SELECT email FROM users";
$result = $conn->query($sql);

// 데이터베이스의 사서함을 배열에 저장하십시오
$dbEmails = [];
if ($result->num_rows > 0) {
    while ($row = $result->fetch_assoc()) {
        $dbEmails[] = $row['email'];
    }
}
$conn->close();
?>

이 코드에서는 먼저 데이터베이스 user_db 에 연결 한 다음 사용자 테이블에서 모든 이메일 주소를 가져 와서 $ dbemails 배열에 저장합니다.

4. 업로드 된 사서함 데이터를 얻으십시오

다음으로 업로드 된 사서함 목록을 시뮬레이션합니다.이 사서함 목록은 일반적으로 양식을 통해 업로드되어 배열에 저장됩니다.

 <?php
// 업로드 된 사서함 데이터라고 가정하십시오
$uploadedEmails = [
    'user1@example.com',
    'user2@example.com',
    'user3@example.com',
    'user4@example.com'
];
?>

5. Array_Diff () 함수를 사용하여 예외 레코드를 찾으십시오

데이터베이스에 사서함 목록 $ dbemails 와 업로드 된 사서함 목록 $ uploadedeMails가 있으므로 Array_Diff () 함수를 사용하여 업로드 목록에 있지만 데이터베이스가 아닌 사서함 주소를 찾을 수 있습니다.

 <?php
// 업로드 목록에서 사서함을 찾으십시오.
$diffEmails = array_diff($uploadedEmails, $dbEmails);

// 출력 예외 레코드
if (!empty($diffEmails)) {
    echo "다음 사서함은 데이터베이스에 존재하지 않습니다:<br>";
    foreach ($diffEmails as $email) {
        echo $email . "<br>";
    }
} else {
    echo "업로드 된 모든 사서함은 데이터베이스에 있습니다。";
}
?>

6. 샘플 코드를 완료하십시오

위의 모든 코드를 결합하여 전체 PHP 프로그램은 다음과 같습니다.

 <?php
// 데이터베이스 연결 정보
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "user_db";

// 연결을 만듭니다
$conn = new mysqli($servername, $username, $password, $dbname);

// 연결을 확인하십시오
if ($conn->connect_error) {
    die("연결이 실패했습니다: " . $conn->connect_error);
}

// 데이터베이스의 모든 사서함을 쿼리하십시오
$sql = "SELECT email FROM users";
$result = $conn->query($sql);

// 데이터베이스의 사서함을 배열에 저장하십시오
$dbEmails = [];
if ($result->num_rows > 0) {
    while ($row = $result->fetch_assoc()) {
        $dbEmails[] = $row['email'];
    }
}
$conn->close();

// 업로드 된 사서함 데이터라고 가정하십시오
$uploadedEmails = [
    'user1@example.com',
    'user2@example.com',
    'user3@example.com',
    'user4@example.com'
];

// 업로드 목록에서 사서함을 찾으십시오.
$diffEmails = array_diff($uploadedEmails, $dbEmails);

// 출력 예외 레코드
if (!empty($diffEmails)) {
    echo "다음 사서함은 데이터베이스에 존재하지 않습니다:<br>";
    foreach ($diffEmails as $email) {
        echo $email . "<br>";
    }
} else {
    echo "업로드 된 모든 사서함은 데이터베이스에 있습니다。";
}
?>