2011-01-26 3 views
1

Я пытаюсь отсортировать этот массив по season_number, однако я не уверен, какую функцию использовать, поскольку я предполагаю, что мне нужен пользовательский сортировка? Есть идеи?Сортировка многомерного массива help

Array 
(
    [0] => Array 
     (
      [season_number] => 7 
      [show_id] => 21 
      [show_seasons_id] => 14 
     ) 

    [1] => Array 
     (
      [season_number] => 6 
      [show_id] => 21 
      [show_seasons_id] => 31 
     ) 

    [2] => Array 
     (
      [season_number] => 1 
      [show_id] => 21 
      [show_seasons_id] => 40 
     ) 

    [3] => Array 
     (
      [season_number] => 2 
      [show_id] => 21 
      [show_seasons_id] => 41 
     ) 
) 

ответ

1

Вы можете использовать функцию usort с функцией 'Сравнить':

function compare_my_elements($arr1, $arr2) { 
    $s1=$arr1["season_number"]; 
    $s2=$arr2["season_number"]; 
    if($s1 == $s2) return 0; 
    return ($s1 > $s2 ? 1 : -1); 
} 

usort($my_md_array, compare_my_elements); 
1

Попробуйте это:

foreach ($array as $key => $val) { 
    $newArr[$key] = $val['season_number']; 
} 
array_multisort($newArr, SORT_ASC, $array); 

где $ массив является массивом, который вы распечатаны.

+0

хороший один ... хотя '$ link', вероятно, придется стать' $ val'. – xtofl

+0

@xtofl ах, да, вы правы. Извините, это часть частого кода, который я использую, и я копировал и вставлял. Раньше я использовал usort, как ваш пример, однако я обнаружил, что этот способ немного быстрее. Дайте мне знать, если у вас есть разные выводы. – jb1785

+0

Я не настраивал его. Это может быть быстрее из-за того, что «ключи» извлекаются только один раз, а с помощью определяемой пользователем функции логика выделения ключей необходима для каждой операции сравнения в алгоритме сортировки. – xtofl

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