2012-05-07 77 views
41

可能重複:
How can I sort arrays and data in PHP?
How do I sort a multidimensional array in php
PHP Sort Array By SubArray Value
PHP sort multidimensional array by valuePHP數組排序按字母順序使用一個子數組值

我的數組是這樣的:

Array(
    [0] => Array(
     [name] => Bill 
     [age] => 15 
    ), 
    [1] => Array(
     [name] => Nina 
     [age] => 21 
    ), 
    [2] => Array(
     [name] => Peter 
     [age] => 17 
    ) 
); 

我想根據他們的姓名按字母順序對它們進行排序。 我看到PHP Sort Array By SubArray Value但它沒有多大幫助。 任何想法如何做到這一點?

+2

您鏈接的問題包含您需要的確切答案..只需在比較函數中用'name'替換''optionNumber''。投票結束重複。如果在另一個問題中有什麼不明白的地方,請詳細詢問。 –

+0

我從來沒有見過有兩個值具有相同鍵的數組。可能這就是爲什麼排序不起作用? – hakre

回答

95

這裏是你的答案和它的作品100%,我測試過它。

<?php 
$a = Array(
    1 => Array(
     'name' => 'Peter', 
     'age' => 17 
    ), 
    0 => Array(
     'name' => 'Nina', 
     'age' => 21 
    ), 
    2 => Array(
     'name' => 'Bill', 
     'age' => 15 
    ), 
); 
function compareByName($a, $b) { 
    return strcmp($a["name"], $b["name"]); 
} 
usort($a, 'compareByName'); 
/* The next line is used for debugging, comment or delete it after testing */ 
print_r($a); 
+12

所有在一行中:usort($ array,function($ a,$ b){return strcmp($ a [「name」],$ b [「name」]);}); – pmrotule

+4

@ pmrotule:僅用於版本> PHP 5.3 – Mohit

+7

值得注意的是,strcmp是大小寫敏感的。花了我一段時間來弄清楚爲什麼按字母順序排序並沒有達到預期的結果。我改變了上面的代碼返回以下內容:return strcmp(strtolower($ a [「name」]),strtolower($ b [「name」])); – Andrew

9

usort是你的朋友:

function cmp($a, $b) 
{ 
     return strcmp($a["name"], $b["name"]); 
} 

usort($array, "cmp"); 
+0

非常感謝你 –