我有这个PHP代码,将每个4个元素包装在div class =“ row”中.
我的代码是这样的:
$counter = 1;
echo '<div class="row">';
foreach($items as $item) {
// some code here
if($counter % 4 == 0) {
echo '</div><div class="row">';
}
$counter++
}
echo '</div>';
这可以工作,但显然在末尾添加了一个额外的div class =“ row”.我该如何预防?
更新
好吧,设法找到一些东西.这是我的位置.
$xml = simplexml_load_file('xml/list.xml');
$count = count($xml);
$counter = 1;
if(file_exists('xml/list.xml')) {
echo '<div class="row">';
foreach($xml->work as $item) {
echo $counter;
if($counter % 4 == 0) {
echo '</div><div class="row">';
}
$counter++;
}
echo '</div>';
}
不知道为什么,但是对于xml,此代码放置了一个额外的空div.仅当xml节点数是4的倍数时,才会出现这种情况.
样品Xml
<list>
<work id="1">
<title>title here</title>
<description>description here</description>
<img>image name</img>
<url>url</url>
</work>
<work id="2">
<title>title here</title>
<description>description here</description>
<img>image name</img>
<url>url</url>
</work>
<work id="3">
<title>title here</title>
<description>description here</description>
<img>image name</img>
<url>url</url>
</work>
<work id="4">
<title>title here</title>
<description>description here</description>
<img>image name</img>
<url>url</url>
</work>
</list>
请帮忙.谢谢
解决方法:
有很多方法可以做到这一点.
如果没有性能问题,这将是我的选择.
<?PHP
$items = [1,2,3,4,5,6];
function itemsToRow($items) {
$rows = [];
$itemIndex = 0;
foreach ($items as $item) {
$rowIndex = (int) ($itemIndex / 4);
$rows[$rowIndex][] = $item;
$itemIndex++;
}
return $rows;
}
foreach(itemsToRow($items) as $rowItems) {
echo '<div class="row">';
foreach($rowItems as $item) {
echo $item;
}
echo '</div>';
}
?>
你可以在这里找到一个有效的例子https://eval.in/919896
有什么优势?您不必在循环内或循环外都处理特殊情况.
这降低了代码复杂性并增强了可读性.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。