我有一个数组(下面)。我想用2个不同的值对它进行排序,首先是“override”中的值,它将是1-9的整数。然后,如果0或null,我希望数组按“total_rank”排序。因此,如果覆盖具有3个不同的值213,然后总排名为1.4,1.6,1.2,则数组将被重新组织为第一行,具有覆盖 - 1,2,3。下一行将是具有total_rank的行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"
答案 0 :(得分: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");