在嵌套div中递归输出php数组?

时间:2013-03-17 14:37:00

标签: php arrays

我有一个数组如下面的数据

$array = array(
   'someKey' => array(
       'id' => 1,
       'string' => 'some key',
       'someKey2' => array(
            'id' => 1,
            'string' => 'some key two',
            'someKeyThree' => array(
                 'id' => 1,
                 'string' => 'some key three',
            ,
       ),
   ),
   'someOtherKey' => array(

   ),
);

我想做的是将每个数组作为嵌套的div p结构,

<div>
    <p>someKey</p> // key of first array value
    <div>
          <p>someKey2</p>
          <div>
                 <p>SomeKeyThree</p>
          </div>
    </div>
</div>

我尝试过使用new RecursiveIteratorIterator(new RecursiveArrayIterator($this->getData(), RecursiveIteratorIterator::CHILD_FIRST));

并使用它,但我遇到了麻烦,因为div的结束标记永远不会正确。一旦iterator到达数组的底部而没有要进入的数组,我希望它完全停止迭代。

感谢

1 个答案:

答案 0 :(得分:1)

你必须递归调用一个函数。

function printUl($arr){
$output = "<ul>";
foreach ($arr as $key => $val){
  if (is_array($val)){
    $output .= printUl($val);
    continue;
  }
  else{
  $output .= "<li>".$val."</li>"

  }
$output .= "</ul>";
return $output;
}
}