Array ([0] => Array
(
[id] => 1
[name] => A
[dept] => 0
)
[1]=>Array
( [id] => 2
[name] => B
[dept] => 0
)
[2]=>Array
( [id] => 1
[name] => A
[dept] => 1
)
)
应用后,唯一数组函数应检查重复值为id并检查dept> 0是否保留,否则删除dept = 0的重复数组
在上面的例子中结果Array [1]和Array [2]
$final = array_values(array_combine(array_column($2DArray, 'id'), $2DArray));
上面的函数给了我唯一的数组,但我想检查列值dept> 0。
我怎样才能做到这一点?
答案 0 :(得分:0)
$output =array_values( array_reduce
(
$2DArray,
function (array $carry, array $item) {
$key = $item['id'];
if (! isset($carry[$key])) {
$carry[$key] = $item;
return $carry;
}
$old = $carry[$key];
if ($old['dept'] < $item['dept']) {
$carry[$key] = $item;
}
return $carry;
},
array()
));
print_r($output);
答案 1 :(得分:0)
您可以按dept
对其进行排序,然后过滤:
array_multisort(array_column($array, 'dept'), SORT_DESC, $array);
$final = array_filter($array, function($v) {
static $ids = array();
if(in_array($v['id'], $ids)) {
return false;
} else {
$ids[] = $v['id'];
return true;
}
});
而且,您应该知道$2DArray
不是有效的变量名。