В новой записи я вам покажу функцию которая находит все совпадения в массиве по ключу, на разных уровнях вложенности.
Что бы вы понимали что именно делает данная функция, давайте рассмотрим следующий массив.
В данном массиве нам нужно получить значения по ключу category_id на всех уровнях вложенности.
[
"category_id" => 17027915,
"title"=> "Мебель",
"children" => [
"category_id" => 17027914,
"title" => "Матрасы",
"children" => [
[
"category_id" => 34196592,
"title" => "Матрас в кроватку для новорожденных до 3 лет",
"children" => [
]
],
[
"category_id" => 53384679,
"title" => "Матрас беспружинный",
"children" => [
]
]
]
]
]
Функция для решения данного вопроса написана ниже. Приятного использования!
function recursiveFind(array $array, $needle) {
$iterator = new RecursiveArrayIterator($array);
$recursive = new RecursiveIteratorIterator($iterator, RecursiveIteratorIterator::SELF_FIRST);
$return = [];
foreach ($recursive as $key => $value) {
if ($key === $needle) {
$return[] = $value;
}
}
return $return;
}