You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP如何跳转到循环开头?代码场景下的实现疑问

在PHP循环中如何跳转到循环开头忽略已处理项?

我有一段简化后的PHP代码:

$html = ""; 
$posts = $sth->fetch(PDO::FETCH_ASSOC); 
while ( $post = array_shift($posts) ){ 
    if ( $post['deleted'] == true ){ 
        /* 跳转到上方四行(while处)以忽略该已删除的帖子 */ 
    } 
    $html .= '<div class="content">' . $content . '</div>'; 
}

如注释里说的,我需要直接跳转到循环开头,忽略当前这个已删除的帖子。注:实际场景比较复杂,没法把$html .= ...放进else块,所以想问问PHP里有没有实现向上跳转的方式?


当然可以实现!PHP里专门有针对循环的跳转语句,完美解决你的需求:

  • 使用continue语句:这就是你要找的「跳转到循环开头」的方法。当代码执行到continue时,会直接跳过当前循环剩余的代码,回到循环的条件判断处(也就是你的while那一行),开始下一次循环。

把你的代码修改一下就行:

$html = ""; 
$posts = $sth->fetch(PDO::FETCH_ASSOC); 
while ( $post = array_shift($posts) ){ 
    if ( $post['deleted'] == true ){ 
        continue; // 直接跳回while循环开头,忽略后续代码
    } 
    $html .= '<div class="content">' . $content . '</div>'; 
}
  • 如果是多层嵌套循环:要是以后遇到嵌套循环的场景,还可以给循环加标签,用continue 标签名精准跳转到指定循环的开头,比如:
outer_loop:
foreach ($outerArray as $item) {
    while ($innerItem = array_shift($innerArray)) {
        if ($innerItem['invalid']) {
            continue outer_loop; // 直接跳转到外层循环的开头
        }
        // 其他代码
    }
}

不过你的场景里用普通的continue就完全足够了,它会自动回到当前所在的while循环的条件判断位置,刚好符合你要跳过已删除帖子的需求。

内容的提问来源于stack exchange,提问作者Martin AJ

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 07:18:53