父子关系PHP / MYSQL

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了父子关系PHP / MYSQL脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
我有这样一张桌子:

> id
>名字
> parent_id

然后我想根据他们的id选择某些行,所以像这样:

SELECT * 
  From TABLE 
 WHERE id IN ('1','5','8','9','35')

我想从这个查询中也显示父/子关系,如:

id   parent  
-----------
1    0  
5    1  
8    0  
9    8  
35   9

所以最终输出看起来像这样:

1  
--5  

8   
--9  
 ----35

是否MysqL之外执行此操作,我尝试过使用数组,但无法弄清楚,或者
我是在MysqL中做的,我不知道该怎么做.

解决方法

这是我能够带来的似乎工作得很好的东西.

PS-对不起格式化,无法搞清楚:((修复?)

>我从MysqL获取了我的parent_id和id并将其放入arraly,其中数组键是id,值是父类,因此在MysqL的while循环中,类似这样:$testarray [$id] = $PARENT_ID;
>然后我通过下面的函数运行它,并命令它我需要它.

function retrieveSuBTree($parent,$myarray) {
    $tempArray = $myarray;
    $array = array();           
    //Now we have our top level parent,lets put ITs children into an array,yea!
    while ($child = array_seArch($parent,$tempArray)) {
        unset($tempArray[$child]);
        //Now lets get all this guys children
        if (in_array($child,$tempArray)) {
            $array[$child] = retrieveSubTree($child,$tempArray);
        } else {
            $array[$child] = true;
        }
    }//end while
    return (!empty($array)) ? $array : false;
}

function retrieveTree($myarray) {
    $array = array();
    $counter = 0;
    foreach ($myarray as $key => $value) {
        $child = $key;
        $parent = $value;
        //if this child is a parent of somebody else
        if (in_array($child,$myarray) && $parent != '0') {
            while ($myarray[$parent] != '' && $myarray[$parent] != '0') {
                $newparent = $myarray[$parent];
                $parent = $newparent;
            }
            if (!array_key_exists($parent,$array)) {
                $array[$parent] = retrieveSubTree($parent,$myarray);
            }
        } else {
            //Now make sure they don't apPEar as some child
            if (!array_key_exists($parent,$myarray)) {
                //see if it is a parent of anybody
                if (in_array($child,$myarray)) {
                    $array[$child] = retrieveSubTree($child,$myarray);
                } else {
                    $array[$child] = true;
                }
            }//end if array key
        }//end initial IN ARRAY
    }//end foreach
    return (!empty($array) ? $array : false);
} 

$test = array(
    '1'=>'15','2'=>'1','3'=>'1','4'=>'0','5'=>'0','6'=>'4','7'=>'6','8'=>'7','9'=>'2','10'=>'9'
);

PRint_r(retrieveTree($test));

脚本宝典总结

以上是脚本宝典为你收集整理的父子关系PHP / MYSQL全部内容,希望文章能够帮你解决父子关系PHP / MYSQL所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。