【问题标题】:Sorting assoc array by duplicate value on assoc array按 assoc 数组上的重复值对 assoc 数组进行排序
【发布时间】:2019-04-26 20:09:15
【问题描述】:

我想通过特定键的重复值对数组进行排序: 我不想删除重复项,但我只需要按重复项对数组进行排序

例如我有这个数组:

$data = array(
    array(
        "id" => 1,
        "name" => "Bruce Wayne",
        "city" => "Gotham",
        "gender" => "Male"
    ),
    array(
        "id" => 2,
        "name" => "Diana Prince",
        "city" => "Gotham",
        "gender" => "Male"
    ),
    array(
        "id" => 4,
        "name" => "Speedy Gonzales",
        "city" => "New Mexico",
        "gender" => "Male"
    ),    
    array(
        "id" => 3,
        "name" => "Diana Prince",
        "city" => "New Mexico",
        "gender" => "Female"
    ),

    array(
        "id" => 5,
        "name" => "Bruce Wayne",
        "city" => "Gotham",
        "gender" => "Male"
    ),
);

我应该有什么作为回应:

$data = array(
        "id" => 1,
        "name" => "Bruce Wayne",
        "city" => "Gotham",
        "gender" => "Male"
    ),
    array(
        "id" => 5,
        "name" => "Bruce Wayne",
        "city" => "Gotham",
        "gender" => "Male"
    ),
    array(
        "id" => 2,
        "name" => "Diana Prince",
        "city" => "Gotham",
        "gender" => "Male"
    ),
   array(
        "id" => 3,
        "name" => "Diana Prince",
        "city" => "New Mexico",
        "gender" => "Female"
    ),
    array(
        "id" => 4,
        "name" => "Speedy Gonzales",
        "city" => "New Mexico",
        "gender" => "Male"
    )
);

在我的代码中,我有一个 assoc 数组,我需要按给定键对其进行排序,而不会删除我需要的所有重复值 我怎样才能做到这一点 ? 谢谢你

【问题讨论】:

标签: php sorting php-7


【解决方案1】:

通过array_mutlisort()结合array_column()使用多维排序(获取哪一列是排序的基础)。这个函数是通过引用的,所以你不需要将结果分配回某些东西。

$data = array(...);
array_multisort(array_column($data, "name"), SORT_ASC, $data);
print_r($data);

【讨论】:

    【解决方案2】:

    您可以使用usort

    function compare($a, $b)
    {
       if ($a["name"] == $b["name"]) {
        return 0;
       }
      return ($a["name"] < $b["name"]) ? -1 : 1;
    }
    
    usort($data,"compare");
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-26
      • 2011-11-19
      相关资源
      最近更新 更多