我有一个具有 3 个属性的击剑者 id 的多维数组(请参见下面的代码)
Array
(
[0] => Array
(
[id] => 5255
[ratio] => 1
[point_difference] => -25
[given] => 0
)
[1] => Array
(
[id] => 12256
[ratio] => 0.5
[point_difference] => -6
[given] => 15
)
[2] => Array
(
[id] => 3473
[ratio] => 0.83333333333333
[point_difference] => -26
[given] => 4
)
[3] => Array
(
[id] => 10478
[ratio] => 0.16666666666667
[point_difference] => -16
[given] => 12
)
[4] => Array
(
[id] => 10256
[ratio] => 0
[point_difference] => -15
[given] => 10
)
)
我想按比率对击剑手进行排序,然后给定point_difference
我尝试使用 array_columns 进行 multisport,但它弄乱了列数组的键,我需要将键作为击剑手的 id,以便我可以使用排名更新数据库。($ARRAY_fencers 是上面看到的多维的名字)
//define columns
$ratio_column = array_column($ARRAY_fencers, "ratio", "id");
$point_diff_column = array_column($ARRAY_fencers, "point_difference", "id");
$given_points_column = array_column($ARRAY_fencers, "given", "id");
//start sorting the array array
if (!array_multisort($ratio_column, SORT_DESC, SORT_NUMERIC, $point_diff_column, SORT_DESC, SORT_NUMERIC, $given_points_column, SORT_DESC, SORT_NUMERIC, $ARRAY_fencers)) {
echo "CRITICAL ERROR: array_multisort could not complete the sort!";
}
如果我在排序后尝试获取列的键,我只会得到 0、1、2,...而不是 id,但如果我在排序之前这样做,我会得到完美的 ID,但显然不是按顺序排列的。
我的目标是获取其中一列的键并使用该数组来更新数据库。
//update competitors temp ranking
$temp_ranking_array = array_keys($given_points_column);
我做错了什么还是应该使用其他东西?
感谢您的回答!