Доброго времени суток. Есть массив:
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));
Комментариев нет:
Отправить комментарий