Как правильно получить рекурсию? у меня есть многомерный массив и я хочу получать данные не зависимо от уровня вложенности.
пример мне нужно получить данные по id.public function getChildById($arr, $id) {
if(is_array($arr)){
foreach ($arr as $key => $value) {
if($value['_id'] == $id){
return $value;
}else {
if($this -> getChildById($value['childs'], $id) != null){
print_r(1);
return $arr[$key]['childs'][0];
}
}
}
}
return false;
}
но я получаю максимум данные второго уровня.
как это решить. спасибо.

21 Авг 2019 в 06:30
213 +1
0
Ответы
1

Для того чтобы получить данные из многомерного массива на любом уровне вложенности, можно использовать рекурсивную функцию, которая будет проверять каждый элемент массива и его подмассивы. В вашем случае, чтобы вернуть данные по id независимо от уровня вложенности, можно модифицировать вашу функцию следующим образом:

public function getChildById($arr, $id) {
foreach ($arr as $value) {
if($value['_id'] == $id){
return $value;
} else {
if(isset($value['childs'])) {
$result = $this->getChildById($value['childs'], $id);
if($result !== false){
return $result;
}
}
}
}
return false;
}

Эта функция будет рекурсивно искать элемент с заданным id в каждом элементе массива и его подмассивах. Когда будет найден элемент с данным id, функция вернет его. Если элемент с таким id не был найден, функция вернет false.

Таким образом, можно обращаться к функции getChildById для получения данных по id на любом уровне вложенности массива.

20 Апр в 13:17
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 92 588 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир