2016-01-07 2 views
-4

Так что я следующий массив данных:Лучший способ сортировки массива данных в PHP

array (size=10) 
    0 => int 5 
    1 => string '5B1' (length=7) 
    2 => int 4 
    3 => string '4B1' (length=7) 
    4 => int 3 
    5 => string '3B1' (length=7) 
    6 => int 2 
    7 => string '2B1' (length=7) 
    8 => int 1 
    9 => string '1B1' (length=7) 

То, что я хочу сделать, это разбирайтесь к этому:

array (size=10) 
    0 => string 5B1 
    1 => int '5' (length=7) 
    2 => string 4B1 
    3 => int '4' (length=7) 
    4 => string 3B1 
    5 => int '3' (length=7) 
    6 => string 2B1 
    7 => int '2' (length=7) 
    8 => string 1B1 
    9 => int '1' (length=7) 

Иерархия цифры не меняются, хотя есть дополнительный уровень, как показано здесь:

7 -> 6b2 -> 6b1 -> 6 -> 5b2 -> 5b1 -> 5 4b2 -> 4b1 -> 4 -> 3b2 -> 3b1 -> 3 -> 2b2 -> 2b1 -> 2 -> 1b2 -> 1b1 -> 1 -> b2 -> b1 

Мне интересно, что это лучший способ сортировки это в PHP?

С одной стороны, я собираюсь перебирать массив статической иерархии сверху вниз и использовать это для упорядочивания динамического массива.

Любые другие предложения?

+3

Считаете ли вы использование функции PHP [rsort()] (http://www.php.net/manual/en/function.rsort.php) с флагом 'SORT_NATURAL'? –

+0

вы пробовали проверить себя? прочитать руководство по методам, связанным с массивом? –

+0

http://php.net/manual/en/array.sorting.php Перечисляет функции сортировки массивов – developerwjk

ответ

0

Ответ на это был довольно прост, Марк Бейкер поставил меня на правильный путь.

Первоначально я использовал свернутое сочетание между rsort, krsort и array_flip, чтобы получить практически рабочее решение.

Использование rsort с флагом SORT_NATURAL сделало трюк.

Смежные вопросы