Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在PHP中按2个不同的值对多维数组排序_Php_Sorting_Multidimensional Array - Fatal编程技术网

在PHP中按2个不同的值对多维数组排序

在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新手) 如有任何帮助,将不胜感激,多维数组

我有一个数组(如下)。我想按两个不同的值对其排序,首先是“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,这比在代码中使用数组时的转储更有用。