【发布时间】:2022-01-05 01:11:04
【问题描述】:
我正在尝试根据一致的键对多维数组值进行排序。我的数组看起来与此类似,我想按顺序对值进行排序的键是 discipline_one。
$data = [
[
'id' => 1,
'score' => 200,
'results' => [
'discipline_one' => "4:01"
],
],
[
'id' => 2,
'score' => 250,
'results' => [
'discipline_one' => "3:50"
],
],
[
'id' => 3,
'score' => 284,
'results' => [
'discipline_one' => "3:42"
],
],
[
'id' => 4,
'score' => 300,
'results' => [
'discipline_one' => "4:27"
],
],
];
在上面的示例中关闭id 键,我的预期输出将按顺序排列:
3, 2, 1, 4
之前,我用score查询:
array_multisort(array_column($data, 'score'), SORT_DESC, $data);
但是,如果 I add an additional array_column 在此为 discipline_one 一致键,那么我得到:
array_multisort(array_column(array_column($data, 'result'), 'discipline_one'), SORT_DESC, $data);
array_multisort(): 数组大小不一致
第三个参数需要相同的数组,在这种情况下这是不可能的。有谁知道我可以做到这一点的方法吗?
【问题讨论】:
-
您的数组有一个列
'results',并且您的代码中有'result'来提取该列。 -
这是真的,我把它从我的实际数据中移到了一个更受限的环境中,所以我打错了。该方法仍然会产生问题并且不起作用,所以不,这个问题仍然是可重现的,并且不仅是由错字引起的。 @NigelRen
-
我刚刚尝试了带有“结果”的代码并得到了我期望的顺序 - 4、1、2、3
-
用相同的值尝试接受的答案!您正在比较字符串而不是时间。