Php 为循环计算数据

Php 为循环计算数据,php,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>

我有一份清单,例如:

<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>
<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 <= 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>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>
</ul>
<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>
  • 正文
  • 正文
  • 正文
  • 添加
  • 正文
  • 添加
  • 正文
  • 正文
  • 正文
  • 正文
  • 正文
  • 正文
  • 添加
  • 正文
  • 添加 添加 //下一个
  • 正文
  • 正文
  • 正文
  • 添加
  • 正文
  • 添加
  • 正文
  • 正文
  • 正文
  • 正文
  • 正文
  • 正文
  • 添加
  • 正文
  • 添加 添加 //下一个
  • 正文
  • 正文
  • 正文
  • 添加
  • 正文
  • 添加
  • 正文
  • 正文
  • //结束-不是11!
因此,在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_阵列的位置?始终在一个循环(11项)中的3、4和10之后添加li.add

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

<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
,它会再次运行