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,并检查部门是否保留>0,否则删除重复数组,其中 deppt=0
在上面的情况下,结果数组[1]和数组[2]
$final = array_values(array_combine(array_column($2DArray, 'id'), $2DArray));
上面的函数给了我唯一的数组,但我想检查列值 dept>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);
您可以
按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
不是有效的变量名。