Предположим, у меня было более 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],
];
Ожидаемый результат из приведенного выше примера:
Код: Выделить всё
key 10
и все остальные '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