计算循环数据

时间:2016-10-26 09:48:53

标签: php

我有列表,例如:

<ul>
<li>text</li>
<li>text</li>
<li>text</li>
<li class="add">add</li>
<li>text</li>
<li class="add">add</li>
<li>text</li>
<li>text</li>
<li>text</li>
<li>text</li>
<li>text</li>
<li>text</li>
<li class="add">add</li>
<li>text</li>
<li class="add">add</li>
<li class="add">add</li>
</ul>

然后我在PHP中生成这个列表:

<ul>
<?php for ($i=1; $i <= 11; $i++): ?>
<li>text</li>
<?php if (in_array($i, array(3, 4, 10))): ?>
<li class="add">add</li>
<?php endif ?>
<?php if (in_array($i, array(10))): ?>
<li class="add">add</li>
<?php endif ?>
<?php endfor ?>
</ul>

这很好用。这是架构,如果$ i&gt; 11这应该从头开始添加li.add。例如:

<ul>
<li>text</li>
<li>text</li>
<li>text</li>
<li class="add">add</li>
<li>text</li>
<li class="add">add</li>
<li>text</li>
<li>text</li>
<li>text</li>
<li>text</li>
<li>text</li>
<li>text</li>
<li class="add">add</li>
<li>text</li>
<li class="add">add</li>
<li class="add">add</li>
//NEXT
<li>text</li>
<li>text</li>
<li>text</li>
<li class="add">add</li>
<li>text</li>
<li class="add">add</li>
<li>text</li>
<li>text</li>
<li>text</li>
<li>text</li>
<li>text</li>
<li>text</li>
<li class="add">add</li>
<li>text</li>
<li class="add">add</li>
<li class="add">add</li>
// NEXT
<li>text</li>
<li>text</li>
<li>text</li>
<li class="add">add</li>
<li>text</li>
<li class="add">add</li>
<li>text</li>
<li>text</li>
//END - NOT 11!
</ul>

所以在PHP中我必须:

<ul>
<?php for ($i=1; $i <= 28; $i++): ?>
<li>text</li>
<?php if (in_array($i, array(3, 4, 10, 14, 15, 21, 25, 26))): ?>
<li class="add">add</li>
<?php endif ?>
<?php if (in_array($i, array(10, 21))): ?>
<li class="add">add</li>
<?php endif ?>
<?php endfor ?>
</ul>

如何自动计算in_arrays的位置?总是在一个循环中的3,4和10之后(11个项目),这应该添加li.add。

1 个答案:

答案 0 :(得分:0)

只要您的规则是一致的,您就不需要重新计算任何内容:

<ul>
<?php for ($i=1; $i <= 22; $i++): ?>
<li>text</li>
<?php if (in_array($i%11, array(3, 4, 10))): ?>
<li class="add">add</li>
<?php endif ?>
<?php if (in_array($i%11, array(10))): ?>
<li class="add">add</li>
<?php endif ?>
<?php endfor ?>
</ul>

对于$i < 11然后($i%11) = $i然后再次出现。