2016-01-21 89 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);