我有一个这样的数组:
array(
0 => array(1, 2, 3, 4),
1 => array(1, 3, 2, 4),
2 => array(1, 2, 4, 3),
3 => array(1, 2, 5, 6)
)
我必须删除重复的记录。所以我最后需要这个数组:
array(
0 => array(1, 2, 3, 4),
3 => array(1, 2, 5, 6)
)
脚本是用PHP编写的。
谁能帮忙?:)
这应该可以为您工作:
用array_map()
和sort()
遍历每个子数组。然后简单地返回它们implode()
'ed。使用创建的数组,您可以只使用array_unique()
,然后再使用explode()
的值。
<?php
$result = array_map(function($v){
return explode(",", $v);
}, array_unique(array_map(function($v){
sort($v);
return implode(",", $v);
}, $arr)));
print_r($result);
?>
输出:Array
(
[0] => Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4
)
[3] => Array
(
[0] => 1
[1] => 2
[2] => 5
[3] => 6
)
)
另一种方法是
$filter = array();
$result = array_filter($array, function($e) use (&$filter) {
$sum = array_sum($e);
$ret = isset($filter[$sum]);
$filter[$sum] = true;
return !$ret;
});
演示这必须是易于理解的
foreach($arr as $key => $value){
sort($value);
$arr[$key] = $value;
}
$result = array_unique($arr,SORT_REGULAR);
print_r($result);
输出:Array
(
[0] => Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4
)
[3] => Array
(
[0] => 1
[1] => 2
[2] => 5
[3] => 6
)
)