繁体   English   中英

PHP Array_unique [重复]

[英]PHP Array_unique [duplicate]

如果该子数组的 position 0 处的数组项与后续项匹配,是否可以删除子 arrays?

例如;

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

将调整为output;

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

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);

总是这样,我在发布这个之后找到了解决方案($查询是多维数组);

$newArr = array();

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

$query = array_values($newArr);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM