【发布时间】:2012-12-11 04:20:14
【问题描述】:
以下脚本将根据单键从数组中删除重复项。我通过以下参考找到了它。 参考:remove duplicates from array (array unic by key)
我遇到的问题是 $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
)
...
)
【问题讨论】:
-
@Mike Brant 我什么都没试过。上面的代码适用于 1 个键,但我需要为 2 个键修改它。我也尝试了下面的两个建议,但都没有奏效。
标签: php arrays duplicates