2013-04-25 36 views
0

我有2个while循环,我需要换他们两个当在第n次迭代父div中输出NEEC财产以后像下面结合2 PHP while循环,并添加父格在第n次迭代

<!-- 1-4 items --> 
<div class"parent"> 
<nav> 
    <li>item 1</li> 
    <li>item 2</li> 
    <li>item 3</li> 
    <li>item 4</li> 
<nav> 
<section> 
    <li>content 1</li> 
    <li>content 2</li> 
    <li>content 3</li> 
    <li>content 4</li> 
</section> 
</div> 

<!-- 5-8 items --> 
<div class"parent"> 
<nav> 
    <li>item 5</li> 
    <li>item 6</li> 
    <li>item 7</li> 
    <li>item 8</li> 
<nav> 
<section> 
    <li>content 5</li> 
    <li>content 6</li> 
    <li>content 7</li> 
    <li>content 8</li> 
</section> 
</div> 

我知道我可以遍历导航(和部分)seperately并在每次迭代一个div包裹他们...但我需要这2个独立的结合,而循环和迭代他们一起

<?php $items = 0; while ($sub_sections_mb->have_fields('sub-sections')) : ?> 
    <?php if ($items % 4 == 0) : ?> 

    <nav role="menu"> 
     <ul> 
    <?php endif ; ?>  

       <li class="item col2 col <?php if ($items == 1){echo 'current';} ?>" role="menuitem"> <?php echo $i; $sub_sections_mb->the_value('title'); ?> 

       </li> 

    <?php $items++; 
      if ($items % 4 == 0) : ?> 

     </ul> 
    </nav> 
    <?php endif; 
      endwhile; // End printing heading ?> 

    <?php if ($items % 4 != 0) : ?> 

     </ul> 
    </nav> 
    <?php endif ; ?> 

随着我当前的代码输出看起来像这样

<div> 
<nav> 
    <li>item 1</li> 
    <li>item 2</li> 
    <li>item 3</li> 
    <li>item 4</li> 
<nav> 
<nav> 
    <li>item 1</li> 
    <li>item 2</li> 
    <li>item 3</li> 
    <li>item 4</li> 
<nav> 
</div> 


<div> 
<section> 
    <li>content 5</li> 
    <li>content 6</li> 
    <li>content 7</li> 
    <li>content 8</li> 
</section> 
<section> 
    <li>content 5</li> 
    <li>content 6</li> 
    <li>content 7</li> 
    <li>content 8</li> 
</section> 
</div> 

我使用WP炼金术metabox如果任何帮助

回答

1

这里只是可以让你开始了一个例子。您可能需要将其更改为符合您的需要。我无法使用您的$sub_sections信息,所以我只使用了一个循环遍历信息两次的for()

编辑:更新的代码如下:

$total = 7; // The total number of items. 
$every = 4; // How many items go into each nav/section. 

$output = ''; 

for($i = 0; $i < round($total/$every); $i++) 
{ 
    $min = $i * $every; 
    $max = $min + $every > $total ? $total : $min + $every; 

    $output .= '<div class="parent">'; 

    /* Navigation */ 
    $output .= '<nav role="menu"><ul>'; 

    for($j = $min; $j < $max; $j++) 
     $output .= '<li>Item ' . ($j + 1) . '</li>'; 

    $output .= '</ul></nav>'; 

    /* Section */ 
    $output .= '<section>'; 

    for($j = $min; $j < $max; $j++) 
     $output .= '<div>Content ' . ($j + 1) . '</div>'; 

    $output .= '</section>'; 

    $output .= '</div>'; 
} 

echo $output; 

希望,可以让你在正确的方向前进。

+0

我几乎在那里......但是如果有7个(或6或5或14个27等)元素,我该如何打破循环?所以1个父母剩下4个剩余的只剩下了? – MonteCristo 2013-04-30 11:39:44

+0

@MonteCristo我修改了一下代码。尝试一下,看看它是从哪里得到你的。 – 2013-04-30 14:57:53

相关问题