Heim > Fragen und Antworten > Hauptteil
Zum Beispiel möchte ich die letzte übergeordnete Klasse des kleinen schwarzen Schweins mit der ID 10 erhalten. In der Tabelle ist die parent_id 9, aber was ich erhalten möchte, ist 5. Gibt es eine Möglichkeit, ob ich das beurteilen möchte? Ein bestimmter Datensatz gehört zu dieser letzten übergeordneten Klasse
仅有的幸福2017-06-06 09:56:07
有2种做法可以尝试:
把所有的id和parent_id查询出来,然后进行搜索,这样固定的sql语句可以进行缓存。
添加一个新字段root_id,用于记录根节点,这样就不需要搜索,直接查询即可,只是在插入的时候,需要查询一次。
漂亮男人2017-06-06 09:56:07
$arr = array(
array(
'id' => 10,
'parent_id' => 9
),
array(
'id' => 9,
'parent_id' => 5
),
array(
'id' => 5,
'parent_id' => null
),
);
function getParentId($arr, $id = 10) {
foreach ($arr as $val) {
if($val['id'] == $id) {
if(!empty($val['parent_id'])) {
$id = $val['parent_id'];
getParentId($arr, $id);
}else {
return $id;
}
}
}
return $id;
}
echo getParentId($arr, 10);