如何将foreach循环限制为三个循环

use*_*247 15 php

如何限制这个循环..只是你循环..谢谢你的帮助

<?php
    foreach($section['Article'] as $article) :
?>
<tr>
    <td>
        <?php
            if ($article['status'] == 1) {
                echo $article['title'];
            } 
        ?>
    </td>
    <td>
        <?php
            if($article['status']== 1) {
                echo '&nbsp;'.$html->link('View', '/articles/view/'.$article['id']);
            }
        ?>
    </td>
</tr>
<?php 
    endforeach; 
?>
Run Code Online (Sandbox Code Playgroud)

Ign*_*ams 85

切片阵列.

foreach(array_slice($section['Article'], 0, 3) as $article ):
Run Code Online (Sandbox Code Playgroud)

  • +1这应该是正确的答案.它不使用if语句,在一行中实现它的目标,显然是foreach设置来处理这个问题的方式.即使它不会得到正确的标记,它也是我将使用的那个.我不想要10行代码来解决一个简单的问题. (17认同)

You*_*nse 30

首先,准备你的数据

$i = 1;
$data = array();
foreach($section['Article'] as $article ) {
  if($article['status']== 1) {
    $article['link'] = $html->link('View', '/articles/view/'.$article['id']);
    $data[] = $article;
    if ($i++ == 3) break;
  }
}
$section['Article'] = $data;
Run Code Online (Sandbox Code Playgroud)

然后显示它

<?php foreach($section['Article'] as $article ): ?>
<tr>
  <td><?php echo $article['title'] ?></td>
  <td>&nbsp;<?php echo $article['link']?></td>
</tr>
<?php endforeach ?>
Run Code Online (Sandbox Code Playgroud)


Fle*_*eep 9

使用for()循环来执行此操作会更容易,但要回答这个问题:

<?
$i = 0;
foreach ($section['Article'] AS $article):
    if ($i == 3) { break; }
?>
...
<?
$i++;
endforeach
?>
Run Code Online (Sandbox Code Playgroud)


zer*_*kms 8

如果您的数组以数字方式编制索引,这将有所帮助

foreach($section['Article'] as $i => $article ):

    if ($i > 3) break;
Run Code Online (Sandbox Code Playgroud)

否则 - 手动递增计数器:

$i = 0;
foreach($section['Article'] as $article ):

    if ($i++ > 3) break;
Run Code Online (Sandbox Code Playgroud)