Laravel Рекурсивная Карта - PullRequest
1 голос
/ 25 июня 2019

Мне нужно реализовать функцию рекурсивного отображения в Laravel. Мои данные выглядят так.

enter image description here

Если all_children пусто, я перестану вызывать рекурсив ...

Мой код выглядит так, но он не работает ...

public function mapRecursive($model){

    return collect($model)->map(function($val, $key){
        if($key == 'accessables'){
            return $val->accessables;
        }
        if($key == 'all_children'){
            if (count($val->allChildren > 1)){
                $this->mapRecursive($val->allChildren);
            }
        }
    });


}

Я действительно не знаю, как это сделать ... Если у вас есть идея, ваша помощь приветствуется.

Ответы [ 2 ]

1 голос
/ 26 июня 2019

Спасибо за ваше время ... Вот мое простое решение.

public function mapRecursive($array) {
        $result = [];
        foreach ($array as $item) {
            $result[] = $item['accessables'];
            $result = array_merge($result, $this->mapRecursive($item['allChildren']));
        }
        return array_filter($result);
    }

и оно работает ...

0 голосов
/ 25 июня 2019

вы пробовали это?

if (!(isset($val->allChildren)))
{
  break;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...