0

我有一个具有如下数据结构的数组

$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到达没有数组进入的数组底部,我希望它完全停止迭代。

谢谢

4

1 回答 1

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;
}
} 
于 2013-03-17T14:52:18.493 回答