php中使用多维数组的递归循环


Recursive loop in php using multidimensional array

我有一个这样的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;

据我所知,您有一个n元树结构,需要扫描它来搜索连接大约2个节点的路径。好吧,这是一个经典的算法问题,很多解决方案都在等着你;-)

如果你的树中没有你在帖子中没有提到的特定属性,我建议实现广度优先搜索。