这是我尝试按键match_points
(降序)排序的数组示例:
让下面打印的数组称为$my_arr
。
Array
(
[0] => Array
(
[0] => Array
(
[109] => 92
[match_points] => 50
)
)
[1] => Array
(
[0] => Array
(
[16] => 12
[match_points] => 62
)
)
[2] => Array
(
[0] => Array
(
[80] => 51
[match_points] => 63
)
)
)
我试过了:
$a = usort($my_arr,
function (array $a, array $b) {
return $a["match_points"] - $b["match_points"];
}
);
但是我收到了这条警告信息:
未定义索引:match_points
This post未明确显示如何按特定键对3维数组进行排序, 虽然在阅读该帖子后,答案可以推断。
答案 0 :(得分:3)
问题是你的数组是3维的,但你的排序是为二维数组构建的。
在php 5.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");
答案 1 :(得分:1)
将所有$ 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;