递归函数从分层数组生成平面数组

时间:2015-05-13 12:31:26

标签: php arrays recursion

我过去一小时尝试过的功能是让我生成相同页面的平面数组,但是孩子们在他们之前拥有父母头衔 到目前为止我能做到的是获得1级父母,我需要这背后的逻辑,我可以做代码,主要的一点就是在select菜单中有一个数组来获取 即:

Parent 
parent / Sub 1
Parent / Sub 1 / Sub 2
Parent 2
parent 2 / Sub 1
Parent 2 / Sub 1 / Sub 2

我的数组看起来像这样:

Array (
  [0] => Array (
        [object]=>menuObject
        [title]=>title
        [parent_id]=>parent_id

        [children]=>array(

          [0] => Array (
            [object]=>menuObject
            [title]=>title
            [parent_id]=>parent_id
            [children]=>''
         )

      )
   )
);

我需要的数组如下:

    Array(
        [14]=>'parent / sub / sub 1'
         //[ID]=>[Title]
    )

1 个答案:

答案 0 :(得分:0)

好吧,经过很长一段时间,我想出了一个方法来实现2个功能, 第一个展平数组,另一个找出路径,虽然我不得不查询数据库来实现它

public function parseSelectArray($tree)
    {
        $return=array();
        foreach ($tree as $key => $value) {
           //The other function call to create the path
           $return[$key]=Controller_Admin_Pages::createPath($key);
        }
        return empty($return) ? null : $return;
    }
    public function createPath($id) {
        //Query the page, though I could get the value from the array.
        $page=Model_Page::find($id);

        if($page->idparent == 0) {
            $name = $page->title;
            return $name;
        } else {
            $name = $page->title;
            return Controller_Admin_Pages::createPath($page->idparent). " / ".$name;
        }
    }