Рекурсивный цикл PHP для фильтрации элементов и подэлементов на основе ключа и условия значенияPhp

Кемеровские программисты php общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Рекурсивный цикл PHP для фильтрации элементов и подэлементов на основе ключа и условия значения

Сообщение Anonymous »

Я столкнулся с проблемой фильтра многомерного массива.
Предположим, у меня было более 3 или 50 уровней массивов внутри массива. Как мы можем фильтровать их на основе пары ключ-значение? p>
Пример:

Код: Выделить всё

$arr = [
[ 'key' => 1, 'canView' => false, 'child' => [
['key'=> 10, 'canView' => true]
],
['key' => 2, 'canView' => false],
['key' => 3, 'canView' => true, 'child' => [
['key'=> 10, 'canView' => true, 'child' => [
['key'=> 10, 'canView' => true]] //and so on...
],...
],
['key' => 4, 'canView' => false],
['key' => 5, 'canView' => false],
];
а затем с помощью filterArray($array, $key, $condition) отфильтровать те дочерние элементы и элементы, которые имеют 'canView' => false.
Ожидаемый результат из приведенного выше примера: : удалено, поскольку его родительский ключ 1 имел 'canView' => false
и все остальные 'canView'=>false также будут удалены , оставьте только те, которые и он, и его родительский элемент (если есть) имели атрибут 'canView' => true.
Я пробовал этот код, но он только фильтрует массив 1-го уровня.

Код: Выделить всё

function filterArray($array, $key, $value)
{
foreach ($array as $subKey => $subArray) {
if ($subArray[$key] == $value) {
unset($array[$subKey]);
}
}
return $array;
}
Как мы можем превратить его в рекурсивный цикл, который автоматически определяет наличие еще одного дочернего массива?

Подробнее здесь: https://stackoverflow.com/questions/787 ... -condition
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Php»