次のスクリプトは、単一のキーに基づいて配列から重複を削除します。次の参考文献で見つけました。参照:配列から重複を削除します(キーによる配列unic)
問題は、$ initial_data配列に、[Post_Date]値は同じで、 [ Item_Title]値が異なるアイテムが含まれている可能性があることです。
[Post_Date]と[Item_Title ]の両方の値が同一である場合にのみ重複を削除するようにコードを変更する方法はありますか?
// Remove Duplicates based on 'Post_Date'
$_data = array();
foreach ($initial_data as $v) {
if (isset($_data[$v['Post_Date']])) {
continue;
}
$_data[$v['Post_Date']] = $v;
}
// if you need a zero-based array, otherwise work with $_data
$unique_results = array_values($_data);
以下は、4つのフィールドを示す配列の簡略化された出力です。元の配列には16個のフィールドが含まれています。
$ initial_data:元のデータ配列。[Post_Date]の値は同じですが、[Item_Title]の値は異なります。
Array
(
[0] => Array
(
[id] => 22000
[Category] => vehicles
[Post_Date] => 1356373690
[Item_Title] => Car Painting
)
[1] => Array
(
[id] => 22102
[Category] => vehicles
[Post_Date] => 1356373690
[Item_Title] => Car Repair
)
...
)
$ _data:スクリプト内からの$_data配列
Array
(
[1356373690] => Array
(
[id] => 22000
[Category] => vehicles
[Post_Date] => 1356373690
[Item_Title] => Car Painting
)
[1356373690] => Array
(
[id] => 22102
[Category] => vehicles
[Post_Date] => 1356373690
[Item_Title] => Car Repair
)
...
)
$ unique_results:最終的な一意の結果配列。ご覧のとおり、重複する配列項目は[Post_Date]のみに基づいてスクリプトによって削除されましたが、この配列項目が重複していると見なされないように、[Item_Title]の値が異なるか同一であるかどうかも評価する必要があります。
Array
(
[0] => Array
(
[id] => 22000
[Category] => vehicles
[Post_Date] => 1356373690
[Item_Title] => Car Painting
)
...
)