Как удалить дубликаты ключей в массиве - PullRequest
0 голосов
/ 26 сентября 2011

У меня есть массив с именем $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 ]

1 голос
/ 26 сентября 2011

Вы можете использовать array_multisort(..) для сортировки по id ASC, а затем status DESC. Затем вы можете пройтись по отсортированному массиву и удалить строки, в которых id был виден ранее.

0 голосов
/ 26 сентября 2011

array_filter ()

Это может быть полезным для вас

0 голосов
/ 26 сентября 2011

Удаляет все случаи 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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...