定義と使用法:
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 つずつ比較する必要があります。データが少なくても大丈夫ですが、データが多すぎるのはよくありません。
1: array_diff (old, new) => [A, B] => 削除 (ステータスを無効状態に変更) 2: array_diff (new, old) => [D,E] => 追加
以上、PHP array_diff の応用例をその側面も含めて紹介しましたが、PHP チュートリアルに興味のある友人に役立つことを願っています。