以下のようなコードを書きました。
foreach ($ary as $key=>$val) {
switch ($key) {
case 'aa':
continue;
break;
default:
break;
}
$val = ......
.......
}
思惑としては、$keyの値が'aa'だった時だけforeachの次のループに行きたい・・というものでした。ところが、$keyが'aa'の時でもそのまま次へ行かずにforeach文を実行していました。
そういえばbreakで多重のループを抜ける時は break 2;とかしてたなと思って、continue 2; とすると思った動作になりました。
foreach ($ary as $key=>$val) {
switch ($key) {
case 'aa':
// switchをbreakしてforeachにcontinueする
continue 2;
break;
case 'bb':
// break 2とするとswitchとforeachを飛ばせる
break 2;
default:
break;
}
$val = ......
.......
}
C言語か何かで同じような処理を書いた時は、switch内でcontinueしておけば次のループに行けたような記憶があったので、PHPでも大丈夫だと思ってました。
PHPのswitch内でのcontinueはbreakと同じ動作をするような感じですね。
習慣的にswitch文では全部にbreakを付けてるけど、continueが書いてあればbreakは不要かな。
0 件のコメント:
コメントを投稿