对数组的子元素进行排序


Sort sub elements of array

我有一个像这样的数组:

Array
(
    [0] => Array
        (
            [id] => 1
            [name] => Mickey
        )
    [1] => Array
        (
            [id] => 2
            [name] => Donald
        )
    [2] => Array
        (
            [id] => 3
            [name] => Goofy
        )
    )

有没有办法按字母顺序对"名称"字段进行排序?

是的,有。对usort()使用回调方法;

function my_sorter($a, $b) {
    return strcmp($a['name'], $b['name']);
}
usort($list, 'my_sorter');

您可以使用usort()http://php.net/manual/en/function.usort.php

usort运行良好。传递给usort的函数应该是一个比较函数,如果ab,则返回小于1的值,如果a==b,则返回0。由于数组的格式,比较函数应该比较a['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";
}