【发布时间】:2016-07-25 16:54:41
【问题描述】:
有关此问题的上下文,请参阅我的recent post。在下面的函数中,break continue 将允许我省略最后一个 if 条件。 (参见内部 for 循环中的注释)
function strposHypothetical($haystack, $needle) {
$haystackLength = strlen($haystack);
$needleLength = strlen($needle);//for this question let's assume > 0
$pos = false;
for($i = 0; $i < $haystackLength; $i++) {
for($j = 0; $j < $needleLength; $j++) {
$thisSum = $i + $j;
if (($thisSum > $haystackLength) ||
($needle[$j] !== $haystack[$thisSum]))
break;
// if I could "break continue" I could omit the
// if ($j === $needleLength)
// below and just write $pos = $i; break;
}
if ($j === $needleLength) {
$pos = $i;
break;
}
}
return $pos;
}
我看到了一些类似的帖子,例如 this 一个并不能完全回答我的问题。我不想重构上面的函数。我不需要break 2 也不需要continue 2。注意 break 2 在内部循环中不起作用,因为外部 for 循环中的必要迭代将被遗漏。 continue 2 也失败了,因为内部 for 循环需要迭代到针的末尾。 break continue 可以在 PHP 中使用吗?
注意我已经尝试过这个并得到了一个致命错误,所以我假设答案是“否”或者我没有正确地实现它。
注意 2 “break continue”是指中断内部循环,然后继续外部循环
【问题讨论】:
-
您希望
break continue实际做什么?有点矛盾 -
突破内部并进入外部的下一次迭代,继续跳过 $pos 并打破它,这是我想做的
-
@self 能不能多展示一些,PHP 手册中没有提到
-
原谅我的迟钝,但
break为什么不突破内在,继续外在? -
没什么问题 - 我只是有一个庞大的应用程序,我正试图以任何可能的方式精简(字面意思)。 “中断继续”将允许循环跳过外部循环中的最终 if 条件。如果外部循环有数万次迭代,跳过最后一个 if 将意味着什么(尽管仍然不多:))我的问题是一个合理的问题,根据回复,我假设答案是“否”