唯一的 2D 数组,但检查 PHP 中的列值


Unique 2D Array but check against column value in PHP

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不是有效的变量名。