如何在PHP中按键对三维数组排序
这是一个数组的示例,我尝试按关键匹配点降序排序: 将下面打印的数组称为$my_arr 我试过这个:如何在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"]; } ); 但我得到的警告是: 未定义索引:匹配点 没有明确显示如何按特定键对三维数组进行排序, 虽然在阅读了那篇文章后可以推断出答案。问题是你的数组是三维的,但
$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错误消息本身并不清楚。目前尚不清楚的是如何修复它。