Php 删除重复的数组键
阵列结构Php 删除重复的数组键,php,Php,阵列结构 array:2 [ 0 => array:3 [ "id" => 15710 "sale_id" => 6699 "item_id" => 300 ] 1 => array:3 [ "id" => 15711 "sale_id" => 6699 "item_id" => 300 ] ] 如果存在相同的项id,我将尝试删除第二个数组。因此,我引用了数组\u unique,但它
array:2 [
0 => array:3 [
"id" => 15710
"sale_id" => 6699
"item_id" => 300
]
1 => array:3 [
"id" => 15711
"sale_id" => 6699
"item_id" => 300
]
]
如果存在相同的项id
,我将尝试删除第二个数组。因此,我引用了数组\u unique
,但它似乎不起作用
代码
嗯,array_unique不会像你希望的那样深入。 您可以通过使用以下代码来实现这一点:
$uniqueItems = array_reduce($array, function($carry, $item){
if(!key_exists($item['item_id'], $carry)){
$carry[$item['item_id']] = $item;
}
return $carry;
}, []);
如果要再次使用索引数组,可以使用:
$indexedArray = array_values($uniqueItems);
在这种情况下,网站上的一段旧代码应该对您有所帮助
function unique_multidim_array($array, $key) {
$temp_array = array();
$i = 0;
$key_array = array();
foreach($array as $val) {
if (!in_array($val[$key], $key_array)) {
$key_array[$i] = $val[$key];
$temp_array[$i] = $val;
}
$i++;
}
return $temp_array;
}
工作演示:假设您的数组是按
id
排序的,如果重复,您希望保留具有最小id
的项:
$newArr = [];
foreach(array_reverse($arr) as $v) {
$newArr[$v['item_id']] = $v;
}
$newArr = array_values($newArr);
$newArr = [];
foreach(array_reverse($arr) as $v) {
$newArr[$v['item_id']] = $v;
}
$newArr = array_values($newArr);