2012-05-07 42 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

非常感谢你 –