如何在3次迭代后停止这个foreach循环?

时间:2010-05-19 12:20:54

标签: php

这是循环。

foreach($results->results as $result){
    echo '<div id="twitter_status">';
    echo '<img src="'.$result->profile_image_url.'" class="twitter_image">';
    $text_n = $result->text; 
    echo "<div id='text_twit'>".$text_n."</div>";
    echo '<div id="twitter_small">';
    echo "<span id='link_user'".'<a href="http://www.twitter.com/'.$result->from_user.'">'.$result->from_user.'</a></span>';
    $date = $result->created_at;

    $dateFormat = new DateIntervalFormat();

    $time = strtotime($result->created_at);

    echo "<div class='time'>";

    print sprintf('Submitted %s ago',  $dateFormat->getInterval($time));

    echo '</div>';

    echo "</div>";
    echo "</div>";

4 个答案:

答案 0 :(得分:61)

使用break命令。

你错过了一个括号。

$i=0;
foreach($results->results as $result){
//whatever you want to do here

$i++;
if($i==3) break;
}

有关break命令的详细信息:http://php.net/manual/en/control-structures.break.php

更新:正如Kyle指出的那样,如果要打破循环,最好使用for而不是foreach。基本上,您可以更好地控制流量,并获得可读性。请注意,只有当数组中的元素连续且可索引(如 Colonel Sponsz 指出)时才能执行此操作

代码如下:

for($i=0;$i<3;$i++){
$result = $results->results[i];
//whatever you want to do here
}

它更干净,更防错(控制变量都在for语句中),只需读取它就知道它将被执行多少次。如果可能,应该避免break / continue

答案 1 :(得分:7)

  • 在循环之前声明变量,初始化为0。
  • 在for-each主体的开头增加变量。
  • 检查for-each主体末尾的变量。
    • 如果是3,break

你必须小心使用这种技术,因为for-each body中可能还有其他break / continue,但是在你的情况下没有,所以这可行。

答案 2 :(得分:2)

在循环开始时递增一些计数器$i,在它达到3时递增break;,例如:

if ($i++ == 3)
    break;

答案 3 :(得分:2)

foreach($results->results as $i => $result){ 
   if($i==3) break; 
   //whatever you want to do here 
}