Функция должна получить идентификатор человека в качестве аргумента, а затем эта функция проходит по всей таблице и находит отца, мать, дедушка и бабушка, жена, дедушка и дедушка жены этого идентификатора.мать, дети, пра-внуки и т. д.
Итак, вот часть моей таблицы MySQL:
CREATE TABLE IF NOT EXISTS family (
id INT(11) PRIMARY KEY AUTO_INCREMENT NOT NULL,
name VARCHAR(250),
father INT(11),
mother INT(11),
husband INT(11),
wife INT(11),
gender ENUM('M','F'),
state ENUM('Dead','Alive','Unknown')
);
Позвольте мне привести пример: Если я Папа Такер и мой идентификатор 1 , функция должна принять мой идентификатор 1 т.е. getFamilyMembers (1) и запустить таблицу семейства и выдать что-то какниже:
[
{"id":"10", "gen":"1", "name":"Great Papa", "father":"", "mother":"", "gender":"M", "wife":"9", "husb":""},
{"id":"9", "gen":"1", "name":"Great Mama", "father":"", "mother":"", "gender":"F", "wife":"", "husb":"10"},
{"id":"1", "gen":"2", "name":"Papa Tucker", "father":"10", "mother":"9", "gender":"M", "wife":"11", "husb":""},
{"id":"11", "gen":"2", "name":"Wifey Tucker", "father":"", "mother":"", "gender":"F", "wife":"", "husb":"1"},
{"id":"21", "gen":"2", "name":"Sis Tucker", "father":"10", "mother":"9", "gender":"F", "wife":"", "husb":""},
{"id":"2", "gen":"3", "name":"Son Tucker", "father":"1", "mother":"11", "gender":"M", "wife":"", "husb":""}
]
Он выберет моих родителей (Великую Папу и Великую Маму), а затем прикрепит их как 1-е поколение (то есть, если я не добавил родителей моих родителей)затем выберите меня, мою жену и сестру и добавьте нас в качестве 2-го поколения , а затем моего сына в качестве 3-го поколения .
В семье может быть до 10 поколений с целым числом 100 членов , функциядолжен иметь возможность выбирать родственников и организовывать их по поколениям от первого до последнего.
Я думаю, что функция должна быть в состоянии выбрать родителей в первую очередь, и если родители присутствуют, она снова вызывает себяно на этот раз, он должен пройти удостоверение личности родителей и должен продолжать делать это, пока не достигнет большинства родителей (1-го поколения).Как только это будет сделано, он начинает искать детей и продолжает вызывать себя в поисках детей, пока не достигнет последнего потомка (при этом он должен сохранять каждое поколение в массиве), а когда это будет сделано, он может отобразитьМассив JSON.
Теперь я не уверен, использовать ли одну рекурсивную функцию, которая ищет родителей (предков) и детей (потомков), или использовать две функции , где одна ищетпредков и когда это сделано, он вызывает функцию, которая ищет потомков, а затем отображает их.
function getFamilyMembers($id)
{
$fathers = array();
if(!empty($id)){
$QUERY = $CONNECTION->query("SELECT * FROM family WHERE id = '$id' LIMIT 1");
if($QUERY->num_rows > 0){
$RESULT = $QUERY->fetch_array();
if(!empty($RESULT["father"])){
array_push($fathers, $RESULT["father"]);
getFamilyMembers($RESULT["father"]);
}
}
}
return $fathers;
}
Я не смог произвести ни один из приведенных выше 2 сценариев код-wise.Мы очень признательны за помощь в этом.
Редактировать: Папа Такер имеет отца, чье удостоверение 10, и матери, чье удостоверение личности 9. Я приложил изображение для ясности.
![Image of Family Relation](https://i.stack.imgur.com/s0AFA.png)