本地测试~~~结果输出页面空白~~
其他地方都排除了~~~只有这里了~~~但我找了好久找不出哪里错了~~~
传入的$tree是一个树形数组~~~function imp($tree)
{
foreach($tree as $w)
{
if(is_array($w))
{
imp($w);
}
else
{
$imparr[]=$w;
}

}
return $imparr;
}

解决方案 »

  1.   

    $tree=Array ( [0] => Array ( [id] => 1 [fid] => 0 [name] => a [children] => Array ( [0] => Array ( [id] => 4 [fid] => 1 [name] => aa [children] => ) [1] => Array ( [id] => 5 [fid] => 1 [name] => aaa [children] => ) [2] => Array ( [id] => 8 [fid] => 1 [name] => fsdf [children] => ) ) ) [1] => Array ( [id] => 2 [fid] => 0 [name] => b [children] => Array ( [0] => Array ( [id] => 6 [fid] => 2 [name] => bb [children] => ) ) ) [2] => Array ( [id] => 3 [fid] => 0 [name] => c [children] => Array ( [0] => Array ( [id] => 7 [fid] => 3 [name] => cccc [children] => ) ) ) )
      

  2.   

    没人承接第 7 行 imp($w); 的返回值
      

  3.   

    $imparr 设置成为static的试试
      

  4.   

    你这里就算把imp($w);改为return imp($w);也不能走完一个数组
    在递归函数内用foreach会比较麻烦,因为指针自动回调和变量名因素
    建议用 array_merge_recursive、array_walk_recursive 或 SPL里面的递归器等等去做这事
      

  5.   

    正确的写法是function imp($tree) {
      $imparr = array();
      foreach($tree as $w) {
        $t = $w['children'];
        unset($w['children']);
        if(is_array($t)) {
          $imparr = array_merge($imparr, imp($t));
        } else {
          $imparr[] = $w;
        }
      }
      return $imparr;
    }Array
    (
        [0] => Array
            (
                [id] => 4
                [fid] => 1
                [name] => aa
            )    [1] => Array
            (
                [id] => 5
                [fid] => 1
                [name] => aaa
            )    [2] => Array
            (
                [id] => 8
                [fid] => 1
                [name] => fsdf
            )    [3] => Array
            (
                [id] => 6
                [fid] => 2
                [name] => bb
            )    [4] => Array
            (
                [id] => 7
                [fid] => 3
                [name] => cccc
            ))