Как правильно получить рекурсию? у меня есть многомерный массив и я хочу получать данные не зависимо от уровня вложенности.
пример мне нужно получить данные по 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
235 +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 Апр 2024 в 13:17
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир