#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]); } }
Комментариев нет:
Отправить комментарий