Как правильно задать алгоритм рекурсии в моем случае?

youngoldman

Новичок
Ребят, в общем столкнулся с такой проблемой.
Пишу рекурсию. Суть такова:
Есть реферальная программа. И функция определяет вышестоящего реферера. Она должна его определить так, чтобы под каждым пользователем было не больше двух(к примеру) рефералов.
То есть если под пользователем есть два реферала, то он начинает чекать этих двух. Если под этими двумя тоже заполнено, то функция чекает следующую линию уже из четырех.
У меня на данный момент такая ситуация. Но она работает неверно. На рисунке указал что именно.123.png
То есть функция начинает свой обход "вглубь" до самого нижнего реферала, а мне нужно чтобы она чекала линии поочередно.
Вот как выводится эта строка: echo $referal_num."---".$change_curator['id']." ".$change_curator['parent']."<br>";
upd.png
Он переходит в пользователю с id 2042 на пятой итерации, а нужно чтобы вызывал 2049.
Как тут правильнее сделать. Заранее премного благодарен.
PHP:
////////////////////////************//////////////////////////////
function overflow_in($parent_link) {
    global $CONNECT;
    $curator = mysqli_query($CONNECT, "SELECT * FROM `users` WHERE `parent` = '$parent_link[id]'");
    while ($change_curator = mysqli_fetch_assoc($curator) ) {
        $referal_num = mysqli_num_rows(mysqli_query($CONNECT, "SELECT * FROM `users` WHERE `parent` = '$change_curator[id]'"));
        echo $referal_num."---".$change_curator['id']." ".$change_curator['parent']."<br>";

        if ( $referal_num < 2 ) {
            return $change_curator['id'];
        }
    }
    $curator_next[$i] = mysqli_query($CONNECT, "SELECT * FROM `users` WHERE `parent` = '$parent_link[id]'");
    $change_curator_next = mysqli_fetch_assoc($curator_next[$i]);
    return overflow_in($change_curator_next);
}

function overflow($parent_cook) {
  global $CONNECT;
  $parent_link = mysqli_fetch_assoc(mysqli_query($CONNECT, "SELECT * FROM `users` WHERE `id` = $parent_cook"));

    $referal_num = mysqli_num_rows(mysqli_query($CONNECT, "SELECT * FROM `users` WHERE `parent` = '$parent_link[id]'"));

    if ( $referal_num < 2 )
        return $parent_cook;
    else
        return overflow_in($parent_link, 1);
}
////////////////////////************//////////////////////////////
 
Последнее редактирование:
Сверху