array_diff()は、他の配列にない最初の配列の2つ以上の配列を比較し、値を返すPHPの配列関数です。この関数は、アレイを比較します。
文法:
array_diff(array $array1, array $array2, array ...$arrays): array
$ array1 :最初の配列(比較に使用されるベンチマークアレイ)。
$ array2、... $ arrays :その他の配列、複数の配列をパラメーターとして比較できます。
この関数は、$ 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とアップロードされたメールボックスリスト$ uploademailsが揃っているので、 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 "すべてのアップロードされたメールボックスはデータベースに存在します。";
}
?>