Добрый день! Уверен, что задача простая, но я никак не соображу. Попрошу помочь с ней и растолковать алгоритм и что к чему.
Предположим есть следующая структура в таблице БД.
Users
1.id
2.name
3.affiliated_by
Как я это вижу - необходимо взять из базы первую запись с идентификатором авторизованного пользователя и использовать его для проверки, есть ли в базе запись, где affiliated_id будет равна идентификатору текущего пользователя.
Если запись найдена, то мы берем идентификатор этой записи и снова проверяем, существует ли записи, где affiliated_id будет равна предыдущей записи. Соответственно таким образом я получу корректную цепочку пользователей. Укажите на мои и шибки и правильный путь для решения задачи, если можно с примерами, буду крайне признателен. Спасибо!
$users = [
0 => ['id' => 1, 'name' => 'Name', 'affiliated_by' => null],
1 => ['id' => 2, 'name' => 'Name', 'affiliated_by' => 1],
2 => ['id' => 3, 'name' => 'Name', 'affiliated_by' => 1],
3 => ['id' => 4, 'name' => 'Name', 'affiliated_by' => 2],
4 => ['id' => 5, 'name' => 'Name', 'affiliated_by' => 3],
5 => ['id' => 6, 'name' => 'Name', 'affiliated_by' => null],
6 => ['id' => 7, 'name' => 'Name', 'affiliated_by' => null],
7 => ['id' => 8, 'name' => 'Name', 'affiliated_by' => 7],
];
$refs = [];
$uid = 1;
foreach($users as $user)
{
if ($user['id'] == next($users)['affiliated_by'])
$refs[] = $user;
}
На выходе, хотелось бы получить следующий массив
$refs = [
0 => ['id' => 2, 'name' => 'Name', 'affiliated_by' => 1],
1 => ['id' => 3, 'name' => 'Name', 'affiliated_by' => 1],
2 => ['id' => 4, 'name' => 'Name', 'affiliated_by' => 3],
3 => ['id' => 5, 'name' => 'Name', 'affiliated_by' => 4],
];