在PHP中按2个不同的值对多维数组排序
我有一个数组(如下)。我想按两个不同的值对其排序,首先是“override”中的值,它将是一个整数1-9。如果0或null,我希望数组按“total_rank”排序。因此,如果override有3个不同的值213,然后总秩为1.4、1.6、1.2,那么数组将被重新组织为override为-1、2、3的第一行。下一行是总排名为1.2、1.4、1.6的行 对不起,如果我没有解释清楚,因为我想。我尝试使用arsort(),但无法让它实现我想要的功能(我是PHP新手) 如有任何帮助,将不胜感激,多维数组的一行示例如下:在PHP中按2个不同的值对多维数组排序,php,sorting,multidimensional-array,Php,Sorting,Multidimensional Array,我有一个数组(如下)。我想按两个不同的值对其排序,首先是“override”中的值,它将是一个整数1-9。如果0或null,我希望数组按“total_rank”排序。因此,如果override有3个不同的值213,然后总秩为1.4、1.6、1.2,那么数组将被重新组织为override为-1、2、3的第一行。下一行是总排名为1.2、1.4、1.6的行 对不起,如果我没有解释清楚,因为我想。我尝试使用arsort(),但无法让它实现我想要的功能(我是PHP新手) 如有任何帮助,将不胜感激,多维数组
array(16) {
["id"]=>
string(1) "3"
["title"]=>
string(5) "test2"
["description"]=>
string(5) "test2"
["requester"]=>
string(1) "1"
["project_id"]=>
string(1) "2"
["client_ranking"]=>
string(1) "5"
["tech_ranking"]=>
string(1) "5"
["time_ranking"]=>
string(1) "5"
["pm_ranking"]=>
string(1) "5"
["total_rank"]=>
string(3) "1.8"
["datecreated"]=>
string(19) "2012-01-05 11:58:13"
["dateclosed"]=>
string(19) "2012-01-05 11:58:13"
["ispending"]=>
string(1) "1"
["isclosed"]=>
string(1) "0"
["override"]=>
string(1) "5"
["developer"]=>
string(1) "1"
如果我理解正确,您可以尝试使用
usort
:
function cmp($a, $b)
{
// if 'override' is same we compare 'total_rank'
if ($a['override'] == $b['override']) {
if ($a['total_rank'] == $b['total_rank'])
return 0;
return ($a['total_rank'] < $b['total_rank']) ? -1 : 1;
}
// else compare 'override'
return ($a['override'] < $b['override']) ? -1 : 1;
}
usort($array, "cmp");
函数cmp($a,$b)
{
//如果“覆盖”相同,我们比较“总排名”
如果($a['override']=$b['override'])){
如果($a['total_rank']=$b['total_rank']))
返回0;
回报($a['total_rank']<$b['total_rank'])?-1:1;
}
//否则请比较“覆盖”
返回($a['override']<$b['override'])?-1:1;
}
usort($数组,“cmp”);
你看过array\u multisort
了吗?Dup of,你能澄清一下你想在这里排序什么吗?你期望最终结果是什么?您是否有许多要排序的数组?生成有效的PHP,这比在代码中使用数组时的转储更有用。