在PHP中单独排序数组的子数组

时间:2014-11-03 11:28:00

标签: php sorting arrays

我有一组数字子阵列。我想对所有子数组进行排序,然后对整个数组进行排序,并删除重复项。使用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

1 个答案:

答案 0 :(得分:1)

我这样做:

array_walk($arr, 'sort');

$deduped = array();
foreach ($arr as $val) {
    $deduped[serialize($val)] = $val;
}

$arr = array_values($deduped);