如何删除数组中的重复键

时间:2011-09-26 05:04:13

标签: php arrays filter

我有一个名为$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”的数字。有没有办法像某些功能那样快速地完成它?

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

这会删除所有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;
}

答案 2 :(得分:0)

array_filter()

这可能是你的用途