数组结构
array:2 [
0 => array:3 [
"id" => 15710
"sale_id" => 6699
"item_id" => 300
]
1 => array:3 [
"id" => 15711
"sale_id" => 6699
"item_id" => 300
]
]
如果有相同的item_id
,我正在尝试删除第二个数组。因此,我提到了array_unique
,但似乎不起作用。
代码
$test = array_unique($model->items->toArray(), SORT_REGULAR);
Debugbar::addMessage($test,'test');
答案 0 :(得分:2)
假设您的数组按id
排序,并且如果重复,则要保留最小的id
项:
$newArr = [];
foreach(array_reverse($arr) as $v) {
$newArr[$v['item_id']] = $v;
}
$newArr = array_values($newArr);
答案 1 :(得分:1)
好吧,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);
答案 2 :(得分:0)
在这种情况下,php.net网站上的一小段代码应该会对您有所帮助,
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;
}
工作演示: https://3v4l.org/v5k1j