我有一组数字子阵列。我想对所有子数组进行排序,然后对整个数组进行排序,并删除重复项。使用sort($val)
无法正常工作,因此我找到了$derp
的以下解决方法,我觉得这是非常愚蠢的:
$arr = array( array(5,6), array(1,2), array(6,5) );
foreach ($arr as $key => $val) {
$derp = $val;
sort($derp);
$arr[$key] = $derp;
}
sort($arr);
$arr = array_map("unserialize", array_unique(array_map("serialize", $arr)));
结果是array( array(1,2), array(5,6) )
。这是在PHP中执行此操作的正确方法,还是有更好更短的方法?
我创建了一个pastebin作为对第一个答案的回复:pastebin.com/Y5vNvKKL
这个问题不再仅仅是一种不太愚蠢的方式来写这个:现在的问题是:为什么sort()
中的array_work()
与sort()
中的foreach
没有给出相同的结果{ {1}}?
顺便说一句:这是关于找到partitions of multisets。
答案 0 :(得分:1)
我这样做:
array_walk($arr, 'sort');
$deduped = array();
foreach ($arr as $val) {
$deduped[serialize($val)] = $val;
}
$arr = array_values($deduped);