在第一次匹配后停止脚本或循环而不使用退出;

Posted

技术标签:

【中文标题】在第一次匹配后停止脚本或循环而不使用退出;【英文标题】:stop script or loop after first match without using exit; 【发布时间】:2012-07-04 11:16:02 【问题描述】:

不知道如何问这个问题...问题是如果if ($current[$id][$i]['item'] == '') 为真,我需要停止循环运行,所以无论脚本需要做什么或在这种情况下回显,都不要重复15 次。

如果使用exit; 整个页面将停止渲染,那么,有什么想法吗?

提前致谢。

如果问题不够清楚,请随时使用 cmets 提问,我将非常乐意澄清任何疑问。

$i=1; 
while($i<=15)  
    if ($current[$id][$i]['item'] == '')  
        echo 'Done!.';
        //do something
     
    $a++; 

【问题讨论】:

讨厌打破它给你,但这东西很简单! 【参考方案1】:

使用break

$i=1; 
while($i<=15)  
    if ($current[$id][$i]['item'] == '')  
        echo 'Done!.';
        break;
     
    $i++;  //<- that should probably be $i instead of $a?

【讨论】:

@user983248 实际上我只是稍微编辑了帖子,答案归功于 Gryphius【参考方案2】:

使用break控制结构怎么样?

【讨论】:

【参考方案3】:

你需要打破。此外,您当前的循环是无限的,因此会超时。大概你的意思是增加$i,而不是$a

$i=1; 
while($i<=15)  
    if ($current[$id][$i]['item'] == '')  
        echo 'Done!.';
        break; //<-- terminate loop
     
    $a++; //<-- shouldn't this be $i++?

【讨论】:

【参考方案4】:

只有两种方法可以打破循环......使用exit;break;......

break; 是你想要的它会退出循环并继续执行,exit 会结束脚本。

【讨论】:

【参考方案5】:
$i=1; 
while($i<=15)  
    if ($current[$id][$i]['item'] == '')  
        echo 'Done!.';
        break;  //   or you can make value of $i = 20;
     
    $a++; 

【讨论】:

虽然这可行,但我不会这样做 - 如果$i 的上限发生变化,这可能会导致各种问题。这就是为什么有 break 关键字的原因。 同意 - 它会起作用,但没有理由在 break 上使用这种技术,并且可能会产生副作用。 @Utkanos 首先我认为他需要在 js 中执行此操作,这就是我发布此内容的原因

以上是关于在第一次匹配后停止脚本或循环而不使用退出;的主要内容,如果未能解决你的问题,请参考以下文章

Python:为啥这个 for 循环在第一次迭代后退出?

嵌套的while循环在第一次迭代PHP后停止

Bash-在每个grep对应关系上运行命令而不停止尾部-n0 -f

如何修复:Xcode 9 构建循环直到退出代码 255

如何让bat脚本循环执行?

Python 函数退出不起作用 - 为啥? [复制]