有關此問題的上下文,請參閱我的recent post。在下面的函數中,break continue
將允許我省略最後的if
條件。 (見在內部for循環的註釋)PHP中存在「break continue」嗎?
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
在內循環中不起作用,因爲外循環中的必要迭代將被忽略。 continue 2
也失敗,因爲內循環需要迭代到針的末端。在PHP中可以使用break continue
嗎?
注我已經試過這一點,得到了一個致命錯誤,所以我認爲無論答案是「沒有」,我實現它不正確。
注2通過 「中斷繼續」 我的意思打破則內循環繼續外
你期望'break continue'實際上能做什麼?它有點矛盾 –
打破內在和外面的下一個迭代,繼續跳過$ POS並在它下面突破,這是我想要做的 –
@self你可以展示更多這個,它不是在PHP手冊 – Martin