PHP - 如何以任意顺序测试多维数组中的重复元素值
PHP - How to test a multidimensional array for duplicate element values in any order
我不确定标题是否真正理解了我的要求,所以这就是我正在尝试做的事情:
我有一个数组数组,每个数组有四个整数元素,即。
Array(Array(1,2,3,4), Array(4,2,3,1), Array(18,3,22,9), Array(23, 12, 33, 55))
我基本上需要删除以任何顺序具有相同值的两个数组之一,如上例中的索引 0 和 1。
当只有两个元素要检查时,我可以很容易地做到这一点,使用 this question 中的最佳答案代码。
我的多维数组在任何给定时间都可以有 1-10 个数组,所以我似乎无法找出处理这样的结构并删除以任何顺序具有相同数字的数组的最佳方法。
非常感谢!
我一直在考虑这个问题,我认为使用设计良好的闭包 with array_filter
可能是我解决这个问题的方法:
$matches = array();
$array = array_filter($array, function($ar) use (&$matches) {
sort($ar);
if(in_array($ar, $matches)) {
return false;
}
$matches[] = $ar;
return true;
});
示例见此处:http://ideone.com/Zl7tlR
编辑:$array
将是您的最终结果,请忽略 $matches
,因为它只是在过滤器关闭期间使用。
我不确定标题是否真正理解了我的要求,所以这就是我正在尝试做的事情:
我有一个数组数组,每个数组有四个整数元素,即。
Array(Array(1,2,3,4), Array(4,2,3,1), Array(18,3,22,9), Array(23, 12, 33, 55))
我基本上需要删除以任何顺序具有相同值的两个数组之一,如上例中的索引 0 和 1。
当只有两个元素要检查时,我可以很容易地做到这一点,使用 this question 中的最佳答案代码。
我的多维数组在任何给定时间都可以有 1-10 个数组,所以我似乎无法找出处理这样的结构并删除以任何顺序具有相同数字的数组的最佳方法。
非常感谢!
我一直在考虑这个问题,我认为使用设计良好的闭包 with array_filter
可能是我解决这个问题的方法:
$matches = array();
$array = array_filter($array, function($ar) use (&$matches) {
sort($ar);
if(in_array($ar, $matches)) {
return false;
}
$matches[] = $ar;
return true;
});
示例见此处:http://ideone.com/Zl7tlR
编辑:$array
将是您的最终结果,请忽略 $matches
,因为它只是在过滤器关闭期间使用。