使用单个foreach
循环是否可以实现以下结构?
+-------------+----------+ foreach | div/div | ul | | | li/li | | | li/li | | | li/li | | | /ul | endforeach +-------------+----------+
使用这样的代码,我得到了<ul>
和<li>
的错误迭代,正如您在this首页下方的库中看到的那样(在首页中) ,商业等。)。
$counter = 0;
foreach( $items as $news ){
if ( $counter == 1 ) { echo '<div class="align-left">News 1</div>'; }
if ( $counter != 1 && $counter <= 4 ) {
echo '<div class="align-right">';
echo '<ul>';
echo '<li>' . news . '</li>';
echo '</ul>';
echo '</div>';
}
$counter++;
} //endforeach
*请注意:我提供的链接并未包含我在此问题中给出的类似外观,但实际上我需要逻辑。
我看到了一些关于我的问题的误解
请注意,$items
包含来自查询的新闻,并且foreach
我必须相应地放置它们。所以我实际上也需要foreach
和设计。如果我先echo
<div class="align-left">News 1</div>
,然后调用foreach
循环,那么就不可能,因为我错过了第一个news
来自$items
。
答案 0 :(得分:1)
您需要将循环更改为以下内容:
echo '<div class="align-left">News 1</div>';
echo '<div class="align-right"><ul>'
foreach( $items as $news ){
echo '<li>' . news . '</li>';
}
echo '</ul></div>';
根据您的修改(请注意,新闻循环中的前2项永远不会显示)
$counter = 0;
$total = count($items);
foreach( $items as $news ){
if ( $counter == 1) {
echo '<div class="align-left">News 1</div>';
if ($total > 2) {
echo '<div class="align-right">';
echo '<ul>';
}
}
if ( $counter > 1 && $counter <= 4 ) {
echo '<li>' . news . '</li>';
}
if ($counter == 4 || $counter == $total) {
echo '</ul>';
echo '</div>';
}
$counter++;
}
答案 1 :(得分:1)
试试这个。希望你想要这个。
$counter = 0;
$item_size = count($items);
if($item_size == 1 ){
echo '<div class="align-left">'.$item[0].'</div>';
}else{
echo '<div class="align-right">';
echo '<ul>';
foreach( $items as $news ){
if ( $counter == 0 ) { echo '<div class="align-left">'.$news.'</div>'; }
if ( $counter != 0 && $counter <= 4 ) {
echo '<li>' . $news . '</li>';
}
$counter++;
} //endforeach
echo '</ul>';
echo '</div>';
}
答案 2 :(得分:0)
在Ariful Haque先生的帮助下解决了这个问题。
$counter = 0;
$totalitems = count( $items );
foreach( $items as $news ){
if ( $counter == 1 ) { echo '<div class="align-left">News 1</div>'; }
if ( $counter != 1 && $counter <= 4 ) {
if( $counter == 2 ) {
echo '<div class="align-right">';
echo '<ul>';
} //endif
echo '<li>' . $news . '</li>';
if( $counter == $totalitems ) {
echo '</ul>';
echo '</div>';
} //endif
}
$counter++;
} //endforeach