Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.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中按键对三维数组排序_Php_Sorting_Multidimensional Array - Fatal编程技术网

如何在PHP中按键对三维数组排序

如何在PHP中按键对三维数组排序,php,sorting,multidimensional-array,Php,Sorting,Multidimensional Array,这是一个数组的示例,我尝试按关键匹配点降序排序: 将下面打印的数组称为$my_arr 我试过这个: $a = usort($my_arr, function (array $a, array $b) { return $a["match_points"] - $b["match_points"]; } ); 但我得到的警告是: 未定义索引:匹配点 没有明确显示如何按特定键对三维数组进行排序, 虽然在阅读了那篇文章后可以推断出答案。问题是你的数组是三维的,但

这是一个数组的示例,我尝试按关键匹配点降序排序:

将下面打印的数组称为$my_arr

我试过这个:

$a = usort($my_arr, 
    function (array $a, array $b) { 
        return $a["match_points"] - $b["match_points"]; 
    }
);
但我得到的警告是:

未定义索引:匹配点

没有明确显示如何按特定键对三维数组进行排序,
虽然在阅读了那篇文章后可以推断出答案。

问题是你的数组是三维的,但是你的排序是针对二维数组的

在PHP5.3+中,可以将usort与闭包一起使用

 usort($array, function($a, $b){return $a[0]["match_points"] - $b[0]["match_points"];}); 
在5.3之前,您已经定义了分拣机功能

 function compMatchPoints($a, $b) {
      return $a[0]["match_points"] - $b[0]["match_points"];
 }
 usort($array, "compMatchPoints");

问题是数组是三维的,但排序是针对二维数组进行的

在PHP5.3+中,可以将usort与闭包一起使用

 usort($array, function($a, $b){return $a[0]["match_points"] - $b[0]["match_points"];}); 
在5.3之前,您已经定义了分拣机功能

 function compMatchPoints($a, $b) {
      return $a[0]["match_points"] - $b[0]["match_points"];
 }
 usort($array, "compMatchPoints");

将所有$data变量更改为数组变量名

 $sortkeys = array();
    foreach ($data as $row) {
        $sortkeys[] = $row[0]['match_points'];
    }
//根据$sortkeys对$data进行排序,并使用sort_DESC进行降序

array_multisort($sortKeys,SORT_DESC, $data, SORT_DESC);

echo "<pre>"
print_r($data);
die;

将所有$data变量更改为数组变量名

 $sortkeys = array();
    foreach ($data as $row) {
        $sortkeys[] = $row[0]['match_points'];
    }
//根据$sortkeys对$data进行排序,并使用sort_DESC进行降序

array_multisort($sortKeys,SORT_DESC, $data, SORT_DESC);

echo "<pre>"
print_r($data);
die;

在每个数组中还有一个数组维度!使用var_dump查看您使用的是什么。$a[0][match_points]和$a[0][match_points]有什么帮助吗?@cocogorilla是的,现在它可以工作了。您不清楚错误消息的哪一部分?@hakre错误消息本身并不清楚。不清楚的是如何修复它。每个数组中还有一个数组维度!使用var_dump查看您使用的是什么。$a[0][match_points]和$a[0][match_points]有什么帮助吗?@cocogorilla是的,现在它可以工作了。您不清楚错误消息的哪一部分?@hakre错误消息本身并不清楚。目前尚不清楚的是如何修复它。