2010-06-08 82 views
1

我曾试图让我的头部围绕构建一个递归函数来处理将未知深度多维数组格式化为HTML和嵌套Div的问题。我认为它应该是一块蛋糕,但不是。PHP:将多维数组格式化为HTML?

这里是我想出了这一步:

function formatHtml($array) { 
    $var = '<div>'; 

    foreach ($array as $k => $v) { 

      if (is_array($v['children']) && !empty($v['children'])) { 
       formatHtml($v['children']); 
      } 
      else { 
       $var .= $v['cid']; 
      } 
    } 

    $var.= '</div>'; 

    return $var; 
} 

这是我的数组:

Array 
(
    [1] => Array 
     (
      [cid] => 1 
      [_parent] => 
      [id] => 1 
      [name] => 'Root category' 
      [children] => Array 
       (
        [2] => Array 
         (
          [cid] => 2 
          [_parent] => 1 
          [id] => 3 
          [name] => 'Child category' 
          [children] => Array() 
         ) 
       ) 
     ) 
) 

回答

2

你只缺少一个重要的部分:当你到formatHtml()递归调用你实际上并不包括返回的内容!附加到$var,你应该得到更好的结果:

function formatHtml($array) { 
    $var = '<div>'; 

    foreach ($array as $k => $v) { 

      if (is_array($v['children']) && !empty($v['children'])) { 
       $var .= formatHtml($v['children']); 
      } 
      else { 
       $var .= $v['cid']; 
      } 
    } 

    $var.= '</div>'; 

    return $var; 
}