Php 按数组的子级数组值排序

Php 按数组的子级数组值排序,php,arrays,Php,Arrays,我尝试搜索并找到以下内容: 但该功能在我的情况下不起作用: $sorted = array(); foreach($players as $player) { $p = Model::factory('user'); $p->load($player['id']); $sor

我尝试搜索并找到以下内容:

但该功能在我的情况下不起作用:

                $sorted = array();
                foreach($players as $player)
                {
                    $p = Model::factory('user');
                    $p->load($player['id']);

                    $sorted[] = array('id' => $player['id'], 'username' => $p->get_username());
                }
如何在用户名后按字母顺序对数组排序

功能,

function cmp($a, $b) {
        if ($a['username'] == $b['username']) {
                return 0;
        }
        return ($a['username'] < $b['username']) ? -1 : 1;
}
然后调用usort$sorted,cmp;对于我来说,获取错误未定义索引[2]是行不通的


有没有办法选择它应该是降序排序还是升序排序?

因为数组中不存在索引2。您应该使用$a['username']或$a['id'],但我想您应该按用户名排序,这样您就可以使用$a['username']。

cmp功能将是:

// $param - the parameter by which you want to search
function cmp(&$a, &$b, $param) {
    switch( $param ) {
        case 'id':
            if ( $a['id'] == $b['id'] ) {
                return 0;
            }

            return ( $a['id'] < $b['id'] ) ? -1 : 1;
            break;
        case 'username':
            // string comparison
            return strcmp($a['username'], $b['username']);
            break;
    }
}

// this is the sorting function by using an anonymous function
// it is needed to pass the sorting criterion (sort by id / username )
usort( $sorted, function( $a,$b ) {
    return cmp( $a, $b, 'username');
});

使用正确的索引-您希望按其排序的值的索引-而不是[2]使用用户名而不是2@karem-检查我的回答我能否向cmp函数传递一个参数,以便我能说明要查找的索引?在这个代码中,“username”。所以usort$sorted,cmp'username';然后,如果我想查找id,则使用sort$sorted,cmp'id,等等?谢谢你的回复。我怎么称呼它?usort$已排序,cmp'username';行不通out@karem-我已修改我的答案,以包括比较过滤器。基本上,它使用PHP中的**匿名lambda函数**。您必须拥有php版本>=5.3