Страницы

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

пятница, 1 февраля 2019 г.

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

Доброго времени суток. Есть массив:
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 они означают, что вот эти элементы массива должны остаться, все остальные удалить нужно. Как это правильно организовать?


Ответ

Пусть $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));

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

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