按PHP中的特定键降序对关联数组进行排序

时间:2015-01-15 19:42:21

标签: php arrays sorting associative-array

我有一个像这样的数组

array('p1'=>array('a'=>0,'b'=>'p1'),'p2'=>array('a'=>4,'b'=>'p2'),'p3'=>array('a'=>1,'b'=>'p3'))

我希望按键a进行排序,所以它看起来像这个

array('p2'=>array('a'=>4,'b'=>'p2'),'p3'=>array('a'=>1,'b'=>'p3'),'p1'=>array('a'=>0,'b'=>'p1'))

这是一个关联的多维数组,我希望第二级数组按一个特定键排序(在示例a中)

我找到了函数uksort并传递了这个函数

function sortByA($a,$b){
    if($a['a'] < $b['a']) return -1;
    return 1;
}

但它说消息:非法字符串偏移&#39;计数&#39;

你能帮忙吗?

1 个答案:

答案 0 :(得分:0)

消息显示非法字符串偏移'计数',这是因为您尝试访问sortByCount函数中的'count'索引。你应该使用'a'索引。

此外,uksort()将按“键”对数组进行排序,而您需要按“值”排序。因此,请使用usort()代替uksort()。签名与uksort()相同。因此,只需在函数中将'count'替换为'a',然后将其传递给usort()