PHPのarray_diffの応用

WBOY
WBOYオリジナル
2016-07-28 08:27:151061ブラウズ

定義と使用法:

array_diff() 関数は、2 つの配列の差分配列を返します。この配列には、比較対象の配列内にあるが、他の引数配列には含まれていないすべてのキーが含まれます。

返された配列では、キー名は変更されません。

構文

array_diff(<em>array1</em>,<em>array2</em>,<em>array3</em>...);
パラメータ 説明
array1 必須。他の配列と比較する最初の配列。
array2 必須。最初の配列と比較する配列。
array3 オプション。最初の配列と比較する他の配列
ヒントとメモ

ヒント: 1 つまたは任意の数の配列を最初の配列と比較できます。

戻り値

戻り値: 比較された配列 (array1) 内のすべての差分を含むが、他のパラメーター配列 (array2 または array3) には含まれない差分配列を返します。等。)。
PHPバージョン: 4.0.1+

説明:

ネットではこう書いてありますが、普段使っていると割と貧弱な事しか分かりません。あまり考えていませんが、最近これを使用したときに問題が発生しました。今後これが発生した場合は、ここに記録します。

私のビジネス要件: 各顧客は 1 つまたは複数のタグを持つことができ、タグ ストレージは 1 つまたは複数のレコードとして保存する必要があるため、追加は 1 つまたは複数のレコードを追加するだけで非常に簡単です。簡単に言えば、古いタグに新しいタグが含まれていない場合は、新しいタグを追加して古いタグを削除する必要があります。古いタグに新しいタグが 1 つ以上含まれている場合、問題は、古いタグに新しいタグが含まれていない場合に、古いタグに存在しない新しいタグを追加することです。 、例で説明しましょう:

example:

古いタグ:[a、b、c] add、delete a and b in old tagsなど、上記の状況のように、初めてだったときでした。古いタグをすべて削除してから、新しいタグを追加するのは問題ありませんが、よく考えてみると、削除という概念は何ですか? それに、データ テーブル内のデータの削除には非常に慎重であることはわかっています。プロジェクトに各ユーザーが複数のタグを持っている場合、それらを削除する必要がありますか? また、テーブル データを削除しても、データ ファイルのサイズが減少していないことがわかります。これは、削除操作後にデータ ファイルにフラグメントが残っているため、この方法はお勧めできません。その後、それらを走査して比較し、比較せずに追加または削除することを考えます。これは両方とも特に面倒です。データを走査し、データを 1 つずつ比較する必要があります。データが少なくても大丈夫ですが、データが多すぎるのはよくありません。

そこで、今回は PHP 関数 array -diff() を使用する方法を考えました。

例:

1: array_diff (old, new) => [A, B] => 削除 (ステータスを無効状態に変更) 2: array_diff (new, old) => [D,E] => 追加

上記は問題を解決しますか? 古いものを処理するだけでなく、新しいものも追加します。

以上、PHP array_diff の応用例をその側面も含めて紹介しましたが、PHP チュートリアルに興味のある友人に役立つことを願っています。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。