現在の位置: ホーム> 最新記事一覧> array_diff()を使用してデータベースデータと比較して例外レコードを見つける

array_diff()を使用してデータベースデータと比較して例外レコードを見つける

M66 2025-05-17

array_diff()は、他の配列にない最初の配列の2つ以上の配列を比較し、値を返すPHPの配列関数です。この関数は、アレイを比較します。

文法:

 array_diff(array $array1, array $array2, array ...$arrays): array
  • $ array1 :最初の配列(比較に使用されるベンチマークアレイ)。

  • $ array2、... $ arrays :その他の配列、複数の配列をパラメーターとして比較できます。

この関数は、$ 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とアップロードされたメールボックスリスト$ uploademailsが揃っているので、 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 "すべてのアップロードされたメールボックスはデータベースに存在します。";
}
?>