按唯一块对具有重复项的数组进行排序

时间:2015-11-13 03:52:59

标签: php arrays sorting

我想要那些元素:

['1','1','2','2','2','3','3','3','3','3','3','3','4']

要分组为具有唯一值的块,使其看起来像这样:

['1','2','3','4','1','2','3','2','3','3','3','3','3']

第一个“块”'1','2','3','4'包含所有唯一值,没有重复,第二个'1','2','3'等。

最大的问题是我的数组不是简单的数字组合,而是二维关联数组,类似:

[['id'=>'xd1c',...],['id'=>'ab2c',...],['id'=>'xd1c',...],['id'=>'xd1c',...],['id'=>'ab2c',...],['id'=>'xd1c',...],['id'=>'687d',...],...]

我对algorythmics和高级排序没有太多经验,我觉得有点不知所措。如果你能指出我正确的方向,那就请你。

1 个答案:

答案 0 :(得分:0)

试试这段代码:

$current = array('1','1','2','2','2','3','3','3','3','3','3','3','4');
$new = array();
while(!empty($current)){
    foreach(array_keys(array_unique($current)) as $index){
        $new[] = $current[$index];
        unset($current[$index]);
    }
}
print_r($new);