一个带有div和多个li的foreach循环

时间:2014-06-02 09:04:58

标签: php html css foreach html-lists

使用单个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

3 个答案:

答案 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