На сколько я знаю. Такое количество запросов в бд не есть Хорошо.
Вижу так сделать массивы данных и работать с ними. минимизировать запросы к бд.
не совсем понятно .
Определяет реферера. То есть если у человека уже есть три(или другое число) реферала, то он пробегается по этим трем рефералам, и выбирает того, у кого меньше трех рефералов, если таких нет - спускается ниже.
допустим пришел запрос , user1 - c числом 3 ( реферал номер 3)
то он пробегается по этим трем рефералам
и выбирает того, у кого меньше трех рефералов - выберает того реферала у которого меньше 3 переходов.
$user = 'us/3';
$user_ref = 3;
$ref_arr = [
'1' => array('count'=>1),
'2' => array('count'=>3),
'3' => array('count'=>3)
];
foreach($ref_arr as $one){
if($one['count']<3){
//выбрали
return breake; // до перевого совпадения
}
}
Если я правильно понял условие