У меня есть массив с именем $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
. Если вы хотите сохранить эти строки, когда другого 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; }
Вы можете использовать array_multisort(..)
для сортировки по id
ASC, а затем по status
DESC. Затем вы можете пройти через отсортированный массив и удалить строки, где ранее был указан id
.
array_filter ()
Это может быть полезно