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