PHP Array_unique

PHP Array_unique

如果子数组位置 0 的数组项与后续项匹配,是否可以删除子数组?

例如;

Array ( [0] => Array ( [0] => 1234 [1] => XX000 ) 
        [1] => Array ( [0] => 1234 [1] => XX001 ) 
        [2] => Array ( [0] => 1234 [1] => XX002 ) 
      )

会调整输出;

Array ( [0] => Array ( [0] => 1234 [1] => XX000 ) )

一直这样,发了这个就找到解决办法了($query是多维数组);

$newArr = array();

foreach ($query as $val) {
    $newArr[$val[0]] = $val;    
}

$query = array_values($newArr);

function my_array_filter($arr){
    $exist = [];

    return array_filter($arr, function($element){
         if( ! array_key_exist($element[0], $exist)){
            $exist[$element[0]] = true;
            return true;
         }
         return false;
     });
}

也许数组函数和回调的一些神秘用法是可能的,但我更喜欢尽可能简单,所以多年后我明白了我自己的解决方案。

那为什么不编程呢?

$ORG = [ [ 1234, 'XX000' ],  
         [ 1234, 'XX001' ],  
         [ 1234, 'XX002' ], 
         [19987, 'XX000'] ];

$NEW = [];
$USEDKEYS = [];

foreach ($ORG as $one){
    if (in_array($one[0], $USEDKEYS)) {
        // skip.   
    } else {
        $NEW[] = $one;
        $USEDKEYS[] = $one[0];
    }
}
unset ($USEDKEYS, $ORG);
var_dump ($NEW);