从数据数组构建html树,但获取重复的节点

时间:2014-05-24 14:50:41

标签: php php-5.3

public function buildHtmlTree2($data, $pid = 0)
{
    $str = '<ul>';
    foreach($data as $key => $value)
    {
        $op = array();
        foreach( $data as $item )
        {
            $str .= '<li>';
            $str .= $item['login'];
            $str .= '</li>';
            if( $item['parent_id'] == $pid )
            {
                $children =  $this->buildHtmlTree2( $data, $item['id'] );
                if( $children ) {
                    $str .= $children;
                }
            }
        }

        $str .= '</ul>';
        return $str;


    }
}

输入数组:

array(

  [0] = array(

    'id' => 1,
    'login' => 'test1',
    'parent_id' => 0

  ),
  [1] = array(

    'id' => 2,
    'login' => 'test2',
    'parent_id' => 1

  ),
  [2] = array(

    'id' => 3,
    'login' => 'test3',
    'parent_id' => 1

  )

)

我正在传递一个idloginparent_id的数组,但在输出中我得到了重复条目,我试图取消{{1} 1}}并将其作为参考传递,但我认为这不是一个好方法,如何避免在此函数中重复,我必须添加/编辑什么?现在不能把它搞定了

1 个答案:

答案 0 :(得分:0)

public function buildHtmlTree2($data, $pid = 0)
{
    $str = '<ul>';
    foreach($data as $key => $value)
    {
        $op = array();
        foreach( $data as $item )
        {
            if( $item['parent_id'] == $pid )
            {
            $str .= '<li>';
            $str .= $item['login'];
            $str .= '</li>';
                $children =  $this->buildHtmlTree2( $data, $item['id'] );
                if( $children ) {
                    $str .= $children;
                }
            }
        }

        $str .= '</ul>';
        return $str;


    }
}

我找到了解决方案,这里是代码......