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

Tap*_*pha 23 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>";
Run Code Online (Sandbox Code Playgroud)

pak*_*ore 62

break命令.

你错过了一个支架.

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

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

有关该break命令的更多信息,请访问:http://php.net/manual/en/control-structures.break.php

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

代码是:

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

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

  • @pakore:绝对的.这就是那种导致模糊不清的错误和难以理解的代码的"智能",同时提供无益的*作为回报. (4认同)
  • @Manos Dilaverakis:这样可行,是的,但答案的目标是了解"休息"是如何工作的,而不是热切的优化. (2认同)

pol*_*nts 7

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

你必须小心这种技术,因为在每个身体中可能有其他break/ continue,但在你的情况下没有,所以这将起作用.