我有一个这样的DB结构。
stopid | parentid
2 | 1
3 | 1
5 | 2
9 | 2
8 | 2
11 | 3
11 | 9我想搜索起跑站和终点站。这是排序或编程搜索的东西。我的第一站是家长id。最后一站作为stopid。由于我必须搜索从1到11的第一个停止,所以我将逻辑放在从最后一个停止11开始,然后递归循环。他们的逻辑是什么。我试过了,但没有成功。它不需要结束所有的根。我只想要任何兼容的第一个根。就像..。
1个-> 3 ->11或1个-> 2 -> 9->11...
extract($_POST);
echo "From :$from to $to".'<br/>';
$sql="select parentid, stopid from routes WHERE stopid = '".$to."' ";
echo $sql.'<br/>';
$result = mysql_query($sql) or die(mysql_error());
$count = mysql_num_rows($result) or die( mysql_error());
$stopid = array();
while( $row = mysql_fetch_array($result)) {
$stopid[$row['stopid']][] = $row['parentid'];
}
echo '<pre>';
$countarray = count($stopid);
while($countarray >= 1){
foreach($stopid as $finalstop_value){
foreach($finalstop_value as $finalstop_ky => $finalstop_vl){
$query = "SELECT * FROM routes WHERE stopid = '".$finalstop_vl."'";
$sql = mysql_query($query) or die(mysql_error());
echo $query. ' Gives '.mysql_num_rows($sql).' rows...<br/>';
while( $row = mysql_fetch_array($sql)) {
$new_stopid[$finalstop_vl][$row['stopid']][] = $row['parentid'];
}
echo '<pre>';
print_r($new_stopid);
// $stopid[$finalstop_vl][] = $new_stopid;
$countarray--;
}
}
}
print_r($stopid);
exit;发布于 2012-07-28 22:22:26
据我所知,您有一个n元树结构,您需要扫描以搜索连接大约2个节点的路径。嗯,这是一个经典的算法问题,有许多解决方案正等着你;-)
如果树中没有您在文章中没有提到的特定属性,我建议您实现一个Breadth-first search。
https://stackoverflow.com/questions/11701752
复制相似问题