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 に答える