复杂的数组循环输出


Complicated array loop output

这是一个很难解释的问题,请耐心等待…

我需要输出一个基于以下数组的表单向导:

Array
(
[about_you] => Array
    (
        [qb-name] => about_you
        [qb-label] => About You
        [qb-type] => ttl
    )
[your_name] => Array
    (
        [qb-name] => your_name
        [qb-label] => What is your name?
        [required] => required
        [qb-type] => slt
    )
[website] => Array
    (
        [qb-name] => website
        [qb-label] => What is your current website?
        [required] => 
        [qb-type] => slt
    )
[your_requirements] => Array
    (
        [qb-name] => your_requirements
        [qb-label] => Your Requirements
        [qb-type] => ttl
    )
[hosting] => Array
    (
        [qb-name] => age
        [qb-label] => How old are you?
        [sq-option] => Array
            (
                [0] => 0-20
                [1] => 21-40
                [2] => 40+
            )
        [qb-type] => sel
    )
[likes] => Array
    (
        [qb-name] => likes
        [qb-label] => What do you like?
        [required] => required
        [qb-type] => mlt
    )
)

qb-type => ttl字段是一个标题字段,也是表单向导中的一个新页面,每个标题的输出如下:

<div id="wizard">
    <!-- foreach.... -->
    <h1> [qb-label] </h1>
    <div class="content"></div>
    <!-- /foreach -->
</div>

所以上述阵列的输出将是…

<div id="wizard">
      <h1>About You</h1>
      <div class="content"></div>
      <h1>Your Requirements</h1>
      <div class="content"></div>
   </div>

我的问题是如何在.content区域的标题字段下方显示任何内容,例如:

<div id="wizard">
          <h1>About You</h1>
          <div class="content">
            <p>
              <label>What is your name?</label>
              <input name="your_name" />
             </p>
            <p>
              <label>What is your current website?</label>
              <input name="your_name" />
             </p>
          </div>
          <h1>Your Requirements</h1>
          <div class="content">
             How old are you?
             What do you like?
          </div>
       </div>

我已经设法把标题写出来了,但我不确定如何在每个部分添加子字段:

<div id="wizard">
<?php foreach($form as $field=>$option): ?>
    <?php if($option['qb-type'] == 'ttl'): ?>
        <h1><?= $option['qb-label'] ?></h1>
        <div>The content goes here</div>
    <?php endif; ?>
<?php endforeach; ?>
</div>

我希望我已经很好地解释了一切,但请随时询问你是否需要更好的解释。

编辑标题正下方的任何数据,直到您到达下一个标题,都将被视为ttl部分的一部分

试试这个

<?php $first = true; ?>
<?php foreach( $form as $field=>$options ) { ?>
    <?php if( $options[ "qb-type" ] == "ttl" ) { ?>
        <?php if( !$first ) echo "</div>";?>
        <?php $first = false; ?>
        <h1><?= $options['qb-label'] ?></h1><div>
    <?php } else { ?>
        <p>
            <label><?= $options["qb-label"]?></label>
            <input type="text" name="<?= $options[ "qb-name"]?>">
        </p>
    <?php }?>
<?php } ?>
</div>