我正在嘗試根據一致的鍵對多維陣列值進行排序。我的陣列看起來與此類似,我想按順序對值進行排序的鍵是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);
但是,如果我 array_column為discipline_one一致的密鑰添加額外的內容,那么我會得到:
array_multisort(array_column(array_column($data, 'result'), 'discipline_one'), SORT_DESC, $data);
array_multisort():陣列大小不一致
第三個引數需要相同的陣列,在這種情況下是不可能的。有誰知道我可以實作這一目標的方法嗎?
uj5u.com熱心網友回復:
為什么不使用 simple usort?
usort($data, fn($a, $b) => ($a['results']['discipline_one'] <=> $b['results']['discipline_one']) * -1);
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/367581.html
