三行代码  ›  专栏  ›  技术社区  ›  Jaquarh

PHP中基于一致数组键的多维数组排序

  •  -1
  • Jaquarh  · 技术社区  · 1 月前

    我试图根据一致的键对多维数组值进行排序。我的数组看起来与此类似,我希望按顺序对值进行排序的键是 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 一致键,然后我得到:

    array_multisort(array_column(array_column($data, 'result'), 'discipline_one'), SORT_DESC, $data);
    

    数组\ u multisort():数组大小不一致

    1 回复  |  直到 1 月前
        1
  •  2
  •   Justinas    1 月前

    为什么不使用simple usort ?

    usort($data, fn($a, $b) => ($a['results']['discipline_one'] <=> $b['results']['discipline_one']) * -1);