【问题标题】:How to remove duplicate keys in array如何删除数组中的重复键
【发布时间】:2011-09-26 05:04:12
【问题描述】:

我有一个名为 $myarray 的数组 -

id position status name

4    23        4   john

3    45        3   mike

4    23        0   john

7    25        2   sam

等等

我需要按“id”过滤数组,当发现类似记录时,我需要按“status”键评估以删除匹配行中 0 或小于“status”的数字。有什么方法可以像某些功能一样快速完成吗?

【问题讨论】:

  • 我对你的数组结构感到困惑。如果我想要 mike 的名字,我会查看 $myarray[1]['name'] (row #1) 还是 $myarray[3]['name'] (id=3)
  • 注意:PHP 数组中没有重复的键。仅重复值。正如这个问题与许多其他问题一样:stackoverflow.com/questions/5960190/…

标签: php arrays filter


【解决方案1】:

您可以使用array_multisort(..)id ASC 然后status DESC 进行排序。然后,您可以遍历已排序的数组并删除之前出现过 id 的行。

【讨论】:

    【解决方案2】:

    这会删除所有出现的status=0。如果你想保留这些行,当没有其他匹配的id时,删除$value['status'] > 0 &&

    $cleanarray = array();
    foreach ($myarray as $value) {
        if (
            $value['status'] > 0 && (
                !array_key_exists($value['id'], $cleanarray) ||
                $value['status'] > $cleanarray[$value['id']]['status']
            )
        ) $new_cleanarray[$value['id']] = $value;
    }
    

    【讨论】:

      【解决方案3】:

      array_filter()

      这可能对你有用

      【讨论】:

      • array_filter 不比较数组中的两个元素。它只看一个。
      • 回调函数只传入数组的一个元素。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-01-18
      • 2018-08-11
      • 2021-09-18
      • 1970-01-01
      • 1970-01-01
      • 2016-04-18
      • 2022-12-03
      相关资源
      最近更新 更多