Страницы

Поиск по вопросам

вторник, 31 декабря 2019 г.

Как удалить определенные элементы массива

#php


Доброго времени суток. Есть массив: 

Array
(
    [34612] => Array
        (
            [ID] => 34612
            [NAME] => Бело-зеленый
            [SORT] => 500
        )

    [34615] => Array
        (
            [ID] => 34615
            [NAME] => Бело-красно-серый
            [SORT] => 500
        )

    [155] => Array
        (
            [ID] => 155
            [NAME] => Бело-красно-синий
            [SORT] => 500
        )

    [161] => Array
        (
            [ID] => 161
            [NAME] => Бело-красно-черный
            [SORT] => 500
        )
)


И есть ключи 155 161 они означают, что вот эти элементы массива должны остаться,
все остальные удалить нужно. 
Как это правильно организовать? 
    


Ответы

Ответ 1



Пусть $array - ваш массив. Для данного случая самое простое: unset($array[34612]); unset($array[34615]); Но лучше универсальный вариант, когда вы легко сможете поменять разрешенные ключи, а неразрешенные ключи заранее не известны (их, например, слишком много): $allowed = [155, 161]; //разрешенные ключи $filtered = array_filter( $array, function ($key) use ($allowed) { return in_array($key, $allowed); }, ARRAY_FILTER_USE_KEY ); //теперь в массиве $filtered только элементы с разрешенными ключами Но флаг ARRAY_FILTER_USE_KEY был добавлен в PHP версии 5.6. Если вы применяете более раннюю версию, то можете использовать менее гибкий, но даже более удобный вариант: $filtered = array_intersect_key($array, array_flip($allowed));

Ответ 2



//$array - ваш массив $result = array(); // новый отфильтрованный массив foreach ($array as $key => $value) { if($key !== 161 && $key !== 155) $result[] = $value; }

Ответ 3



в цикле проходим все элементы массива, если ключ этих элементов не 155 и не 161 - удаляем foreach ($arr as $key => $value) { if($key != '155' AND $key != '161') { unset($arr[$key]); } }

Комментариев нет:

Отправить комментарий