我有一个这样的数组:
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格式。
谁可以提供帮助? :)
答案 0 :(得分:2)
这应该适合你:
只需通过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
)
)
答案 1 :(得分:0)
另一种方法是
$filter = array();
$result = array_filter($array, function($e) use (&$filter) {
$sum = array_sum($e);
$ret = isset($filter[$sum]);
$filter[$sum] = true;
return !$ret;
});
答案 2 :(得分:0)
这一定是易于理解的
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
)
)