我有一个PHP foreach循环,它输出一系列项目。
我想要实现的是一些代码(一个div)包裹在第1项和第1项中。 2还缠绕3&最后一项。
这是PHP:
<?php foreach ($this->item->extra_fields as $key=>$extraField): ?>
<div class="<?php echo ($key%2) ? "odd" : "even"; ?> type<?php echo ucfirst($extraField->type); ?> group<?php echo $extraField->group; ?>">
<span class="itemExtraFieldsValue"><?php echo JHTML::_('content.prepare', $extraField->value); ?></span>
<div class="clearfix"></div>
</div>
<?php $counter++; endforeach; ?>
关于如何实现这一目标的任何想法?
非常感谢提前。
答案 0 :(得分:1)
也许是这样的,原谅我,我的PHP有点生疏。
<?php foreach ($this->item->extra_fields as $key=>$extraField): ?>
<?php
$len = count($this->item->extra_fields);
if ($key == 1 || $key == 2 || $key == 3 || $key == len) {
echo "<div>";
}
?>
<div class="<?php echo ($key%2) ? "odd" : "even"; ?> type<?php echo ucfirst($extraField->type); ?> group<?php echo $extraField->group; ?>">
<span class="itemExtraFieldsValue"><?php echo JHTML::_('content.prepare', $extraField->value); ?></span>
<div class="clearfix"></div>
</div>
<?php
if ($key == 1 || $key == 2 || $key == 3 || $key == len) {
echo "</div>" ;
}
?>
<?php $counter++; endforeach; ?>
可能需要考虑列表的长度,因此您的上次检查可能是len + 1
,前3次检查可能是(0,1和2),这取决于$ key值是。
您的代码的$counter++
部分在foreach
中的作用有点令人困惑,也许您应该将其用于模数并代替密钥。
由于我认为你的代码片段不完整,所以编写解决方案很困难,知道我们正在循环的数据是什么以及只是拥有第一个数据的预期输出也会有所帮助3,最后一项包裹在div中。