2016-01-21 98 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的usort對這樣的條件非常有幫助。 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排序手冊](http://php.net/ manual/en/function.sort.php)我知道是一個激進的想法,但試試吧,讓它成爲你的朋友 – RiggsFolly

回答

0

提取language列,並通過陣列原始數組排序:

array_multisort(array_column($array, 'language'), $array);