我的家谱上出现重复的节点

时间:2019-06-24 06:07:58

标签: php arrays recursion tree instance

我的功能是复制树上的某些节点。当我以递归方式调用该函数时。我有一个所有父亲,母亲,妻子,丈夫,孩子的身份证的数据库表。我只从他们父亲的身份证上拿走所有人。我不知道这些额外的节点来自何处以及应该如何处理。 Output image

   <?php
    function categoryTree($parent_id = 0,&$alreadyThereArr=array())
    {

        $ci =& get_instance();
        //$query = $ci->db->query("SELECT * FROM tbl_user WHERE father_id = $parent_id ORDER BY id ASC");
        $sql="SELECT * FROM `tbl_user` WHERE father_id = '$parent_id' ORDER BY id ASC";
        $query=$ci->db->query($sql);
        $result=$query->result();

        if(count($result) > 0)
        {
            echo '<ul>';
            foreach($result as $key)
            {
                if(!in_array($key->id,$alreadyThereArr))
                {
                    //echo 'In';
                    if($key->wife_id != 0)
                    {
                        //echo 'wife';
                        $wife=$ci->Main_M->getSingleRow('tbl_user','id',$key->wife_id);

                        $start='<div>
                                    <span class="male">'.$key->name.'</span>
                                    <span class="spacer"></span>
                                    <span class="female">'.$wife->name.'</span>
                                </div>';
                    }
                    else
                    {
                        $gender=($key->gender == 'M') ? 'male' : 'female';
                        $start='<div><span class="'.$gender.'">'.$key->name.'</span></div>';
                    }

                    $alreadyThereArr[]=&$key->id;
                     echo '<li>';

                         echo $start;

                             echo '<ul>';

                                 categoryTree($key->id, $alreadyThereArr);

                             echo '</ul>';

                     echo '</li>';
                }
            }
            echo '</ul>';
        }
         //print_r($alreadyThereArr);
    }
    ?>

0 个答案:

没有答案