開発プロセス中に、2つ以上の配列を比較する必要がある状況に遭遇し、特に特定の配列を見つけることがよくあります。 PHPは、非常に実用的な組み込み関数-Array_Diff()を提供します。これにより、このタスクを簡単に達成できます。
array_diff()は、配列の違いを比較するためのPHPの関数です。最初の配列にのみ表示され、後続の配列に存在する値を返さない要素を含む配列を返します。
array array_diff(array $array1, array ...$arrays)
$ array1は、比較したいメイン配列です。
$配列は、メイン配列と比較する1つ以上の配列です。
ユーザーの元の利益とユーザーが提出した新しい興味を記録し、どのものが新しいものであるかを知りたいとします。
<?php
$originalInterests = ['音楽', '映画', '旅行'];
$newInterests = ['音楽', '映画', '旅行', '写真', '読む'];
$addedInterests = array_diff($newInterests, $originalInterests);
print_r($addedInterests);
?>
出力:
Array
(
[3] => 写真
[4] => 読む
)
ご覧のとおり、 array_diff()は、 $ new Interestsにのみ表示される要素を返します。これはユーザーの新しい関心です。
ユーザーが提出したURLをフィルタリングし、ユーザーが送信したWebサイトのリストを処理しているときに新しいもののみを残したいとします。
<?php
$existingUrls = [
'https://m66.net/article/123',
'https://m66.net/blog/2024',
];
$submittedUrls = [
'https://m66.net/article/123',
'https://m66.net/tools/checker',
'https://m66.net/blog/2024',
'https://m66.net/contact',
];
$newUrls = array_diff($submittedUrls, $existingUrls);
print_r($newUrls);
?>
出力:
Array
(
[1] => https://m66.net/tools/checker
[3] => https://m66.net/contact
)
結果は、ユーザーが提出した2つのURLが新しく、元のリストに登場していないことを示しています。
array_diff()は、値によって比較され、 「1」や1などの非ストリクトモード(データ型を比較しない)は同じと見なされます。
厳密な比較(つまり、データ型を比較する必要がある)を使用する必要がある場合は、 array_diff_assoc()またはarray_diff_key()を使用できます。
戻り結果は、元の配列にキー名を保持します。キー名が必要ない場合は、 array_values()で再インデックスできます。
$cleanList = array_values(array_diff($newUrls, $existingUrls));
array_diff()は非常に強力なツールであり、データフィルタリング、ログ比較、ユーザーの動作分析、その他のシナリオに適しています。それがどのように機能するかを理解している限り、多くの配列処理ロジックはシンプルで効率的になる可能性があります。
この記事があなたがよりよく理解し、 array_diff()を使用するのに役立つことを願っています!開発で同様の問題に遭遇した場合、この関数を試してみると、多くのコードを節約できます。