2016-01-21 5 views
0

Мой массив выглядит так.Как отсортировать массив ассоциативных массивов в PHP

Array ( 
    [0] => Array ( 
       [id] => 1 
       [language] => English 
       ) 
    [1] => Array ( 
       [id] => 3 
       [language] => Japanese 
       ) 
    [2] => Array ( 
       [id] => 4 
       [language] => Italian 
       ) 
     [3] => Array ( 
       [id] => 5 
       [language] => Spanish 
       ) 
     [4] => Array (
       [id] => 6 
       [language] => French 
       ) 
    ) 

Теперь то, что я хочу сделать, это отсортировать этот массив с точки зрения языка. Так должно получиться так.

Array ( 
    [0] => Array ( 
       [id] => 1 
       [language] => English 
       ) 
    [1] => Array ( 
       [id] => 6 
       [language] => French 
       ) 
     [2] => Array ( 
       [id] => 4 
       [language] => Italian 
       ) 
     [3] => Array ( 
       [id] => 3 
       [language] => Japanese 
       ) 
     [4] => Array ( 
       [id] => 5 
       [language] => Spanish 
       ) 
    ) 

На самом деле я нашел справочник по PHP полезным. Он решен. Я не знаю, могу ли я добавить ответ на мой вопрос. Но я так и сделал. Я нашел, что PHP-функция очень полезна для таких условий. http://hk2.php.net/manual/en/function.usort.php

function build_sorter($key){ 
    return function ($a, $b) use ($key) { 
     return strnatcmp($a[$key], $b[$key]); 
    }; 
} 

usort($langs, build_sorter('language')); 

foreach ($langs as $value) { 
    echo '<option value="'.$value['id'].'">'.$value['language'].'</option>'; 
} 
+3

Можете ли вы поделиться тем, что, если что-нибудь, вы пробовали? SO не является «дайте мне код» вроде девушки. –

+0

LOL @AbraCadaver –

+2

Я собираюсь сделать опрометчивое и глупое предложение - вы посмотрели руководство [PHP Sort Manual] (http://php.net/) manual/en/function.sort.php) Я знаю, что это радикальная идея, но попробуйте, сделайте ее своим другом. – RiggsFolly

ответ

0

Извлеките language колонку и отсортировать исходный массив по этому массиву:

array_multisort(array_column($array, 'language'), $array); 
Смежные вопросы