PHP 删除多维数组中的重复数组
PHP remove duplicate arrays inside a multi dimensional array
我需要检查二维数组 ($arr) 是否有任何重复项(顺序无关紧要)并将它们放入一个干净的数组中。
例如:
$arr = array (
array (-9,1,8 ),
array (-9,2,7 ),
array (-9,3,6 ),
array (-9,4,5 ),
array (-9,5,4 ),
array (-9,6,3 ),
array (-9,7,2 ),
array (-9,8,1 )
)
最终需要成为:
$cleanArr = array (
array (-9,1,8 ),
array (-9,2,7 ),
array (-9,3,6 ),
array (-9,4,5 )
)
或
$cleanArr = array(
array (-9,5,4 ),
array (-9,6,3 ),
array (-9,7,2 ),
array (-9,8,1 )
)
是否有 PHP 函数,或者我是否需要执行某种循环来清除重复项?
没有函数可以完全做到这一点,但您可以使用函数的组合。您可以首先将数组的所有子批次首先按升序排序,然后对它们进行序列化,利用 array_unique
,然后再次反序列化以再次具有该多维:
foreach($arr as &$a){ sort($a); }
$arr = array_map('unserialize', array_unique(array_map('serialize', $arr)));
print_r($arr);
试试这个:
<?php
$arr = array (
array (-9,1,8 ),
array (-9,2,7 ),
array (-9,3,6 ),
array (-9,4,5 ),
array (-9,5,4 ),
array (-9,6,3 ),
array (-9,7,2 ),
array (-9,8,1 )
);
$arr = array_map(function($n) {return explode(',', $n);}, (array_unique(array_map(function($n) {sort($n); return implode(',', $n);}, $arr))));
echo var_export($arr, true);
?>
输出:
array (
0 =>
array (
0 => '-9',
1 => '1',
2 => '8',
),
1 =>
array (
0 => '-9',
1 => '2',
2 => '7',
),
2 =>
array (
0 => '-9',
1 => '3',
2 => '6',
),
3 =>
array (
0 => '-9',
1 => '4',
2 => '5',
),
)
我需要检查二维数组 ($arr) 是否有任何重复项(顺序无关紧要)并将它们放入一个干净的数组中。
例如:
$arr = array (
array (-9,1,8 ),
array (-9,2,7 ),
array (-9,3,6 ),
array (-9,4,5 ),
array (-9,5,4 ),
array (-9,6,3 ),
array (-9,7,2 ),
array (-9,8,1 )
)
最终需要成为:
$cleanArr = array (
array (-9,1,8 ),
array (-9,2,7 ),
array (-9,3,6 ),
array (-9,4,5 )
)
或
$cleanArr = array(
array (-9,5,4 ),
array (-9,6,3 ),
array (-9,7,2 ),
array (-9,8,1 )
)
是否有 PHP 函数,或者我是否需要执行某种循环来清除重复项?
没有函数可以完全做到这一点,但您可以使用函数的组合。您可以首先将数组的所有子批次首先按升序排序,然后对它们进行序列化,利用 array_unique
,然后再次反序列化以再次具有该多维:
foreach($arr as &$a){ sort($a); }
$arr = array_map('unserialize', array_unique(array_map('serialize', $arr)));
print_r($arr);
试试这个:
<?php
$arr = array (
array (-9,1,8 ),
array (-9,2,7 ),
array (-9,3,6 ),
array (-9,4,5 ),
array (-9,5,4 ),
array (-9,6,3 ),
array (-9,7,2 ),
array (-9,8,1 )
);
$arr = array_map(function($n) {return explode(',', $n);}, (array_unique(array_map(function($n) {sort($n); return implode(',', $n);}, $arr))));
echo var_export($arr, true);
?>
输出:
array (
0 =>
array (
0 => '-9',
1 => '1',
2 => '8',
),
1 =>
array (
0 => '-9',
1 => '2',
2 => '7',
),
2 =>
array (
0 => '-9',
1 => '3',
2 => '6',
),
3 =>
array (
0 => '-9',
1 => '4',
2 => '5',
),
)