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

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

一直以来,我在发布这篇文章后找到了解决方案($query是多维数组(;

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

相关内容

  • 没有找到相关文章

最新更新