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