PHP 如何根据指定键的值排序二维数组?

373 4月之前 PHP 数组

答案

使用PHP内置usort函数实现,这里实现正向的自然排序,其他排序方式略作修改即可。

function sort2DArray($arr, $column)
{
    usort($arr, function($a, $b) use ($column) {
        return strnatcmp($a[$column], $b[$column]);
    });

    return $arr;
}

答案解析

测试代码:

$arr = array(
    array('id' => 3, 'name' => 'd', 'img' => 'icon2.jpg'),
    array('id' => 4, 'name' => 'a', 'img' => 'icon1.jpg'),
    array('id' => 2, 'name' => 'e', 'img' => 'icon10.jpg'),
    array('id' => 5, 'name' => 'b', 'img' => 'icon100.jpg'),
    array('id' => 1, 'name' => 'c', 'img' => 'icon9.jpg'),
);
print_r(sort2DArray($arr, 'id'));    // 根据 id 的值排序
print_r(sort2DArray($arr, 'name'));  // 根据 name 的值排序
print_r(sort2DArray($arr, 'img'));   // 根据 img 的值排序