Array_Diff () 는 PHP의 배열 함수로, 두 개 이상의 배열을 비교하고 다른 배열에 있지 않은 첫 번째 배열에서 값을 반환합니다. 이 기능은 배열을 비교합니다.
문법:
array_diff(array $array1, array $array2, array ...$arrays): array
$ array1 : 첫 번째 배열 (비교에 사용 된 벤치 마크 배열).
$ array2, ... $ 배열 : 기타 배열, 다중 배열은 매개 변수로 비교할 수 있습니다.
이 함수는 $ array1 에 표시되지만 $ array2 및 기타 배열에는없는 모든 요소를 포함하는 배열을 반환합니다.
사용자의 이메일 주소를 저장하는 데이터베이스가 있다고 가정합니다. 업로드 된 사서함 목록을 Array_Diff () 함수를 통해 데이터베이스의 사서함과 비교하여 데이터베이스, 즉 예외 레코드에서 업로드되지 않은 사서함 레코드를 신속하게 찾을 수 있기를 바랍니다.
먼저 데이터베이스가 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 배열에 저장합니다.
다음으로 업로드 된 사서함 목록을 시뮬레이션합니다.이 사서함 목록은 일반적으로 양식을 통해 업로드되어 배열에 저장됩니다.
<?php
// 업로드 된 사서함 데이터라고 가정하십시오
$uploadedEmails = [
'user1@example.com',
'user2@example.com',
'user3@example.com',
'user4@example.com'
];
?>
데이터베이스에 사서함 목록 $ dbemails 와 업로드 된 사서함 목록 $ uploadedeMails가 있으므로 Array_Diff () 함수를 사용하여 업로드 목록에 있지만 데이터베이스가 아닌 사서함 주소를 찾을 수 있습니다.
<?php
// 업로드 목록에서 사서함을 찾으십시오.
$diffEmails = array_diff($uploadedEmails, $dbEmails);
// 출력 예외 레코드
if (!empty($diffEmails)) {
echo "다음 사서함은 데이터베이스에 존재하지 않습니다:<br>";
foreach ($diffEmails as $email) {
echo $email . "<br>";
}
} else {
echo "업로드 된 모든 사서함은 데이터베이스에 있습니다。";
}
?>
위의 모든 코드를 결합하여 전체 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 "업로드 된 모든 사서함은 데이터베이스에 있습니다。";
}
?>