对数组的子元素进行排序

时间:2012-03-28 09:55:40

标签: php arrays sorting

我有一个像这样的数组:

Array
(
    [0] => Array
        (
            [id] => 1
            [name] => Mickey
        )

    [1] => Array
        (
            [id] => 2
            [name] => Donald
        )

    [2] => Array
        (
            [id] => 3
            [name] => Goofy
        )
    )

有没有办法按字母顺序排序'name'字段?

3 个答案:

答案 0 :(得分:1)

是的,有。使用usort();

的回调方法
function my_sorter($a, $b) {
    return strcmp($a['name'], $b['name']);
}

usort($list, 'my_sorter');

答案 1 :(得分:0)

答案 2 :(得分:0)

usort工作正常。传递给usort的函数应该是一个比较函数,如果是ab则返回小于1的值,如果是== b则返回0。由于数组的格式如何,比较函数应该比较['name']和b ['name']。所以:

function cmp($a, $b)
{
    return strcmp($a['name'],$b['name']);
}
$a = array(array("id" => 2, "name" => "Donald"),array("id" => 3, "name" => "Goofy"),array("id" => 4, "name" => "Mickey"));
usort($a, "cmp");
foreach ($a as $key => $value) {
    echo "$key: ".$value['name']."\n";
}