Сортировать массив с дубликатами по уникальным фрагментам

1

Мне нужны элементы этого:

['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',...],...]

У меня нет большого опыта работы с алгоритмами и расширенной сортировкой, и я чувствую себя немного перегруженным. Пожалуйста, если вы можете указать мне в правильном направлении.

Теги:
arrays
sorting

1 ответ

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);
  • 0
    Это работает отлично! Большое спасибо.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню