Как правильно перебрать все элементы дерева?

Здравствуйте помогите составить правильную логику скрипта.
скрипт должен проходится по всем уровням дерева и проверять каждый пункт на условие
5f89d861454d2760817422.png
Вот пример дерева
Скрипт должен пройтись по первой ветке если у test более 3 дочек то проверить test2, если у него более 3-х дочек то test7 если тут ни одного условия не выполнено то перейти на второй уровень и начать проверять сверху вниз
test5
test8
test9
test10
test11 и тд
на данный момент сделал рекурсивную функцию
function refs($ar) {
            $result = [];
            foreach ($ar->children as $key) {
                if(count($key->children) < 3){
                    $result =  $key;
                    break;
                }else{
                    return refs($key);
                }
            }
            return $result;
        }

Но косяк в то что при повторном вызове return refs($key);
туда передаются потомки только категории test и он начинает проверять по ним.
подскажите как можно перебрать все это дерево поуровнево сверху вниз
  • Вопрос задан
  • 88 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы