はじめに
はじめまして!
NE株式会社 開発統括部のはやしまきです。
エンジニアのみなさん、タイトルを見てこいつ何言ってんだとなっていることでしょう。
すんごい今更なのですが、
コードを読んでいる際、continue文を見ると
「continueって結局続けるんだっけ…?」とよくわからなくなるときがあります。
ここはスキップだよな…と思いながらも心配になり、リファレンスを開くというのを何度もやってます。リファレンスをブクマしておいた方がいいですね。お守りです(?)
意味をもぐもぐ咀嚼し、納得して、もう開かなくていいように記事に残します。
一緒にもぐもぐできたら幸いです!
この記事は、NE Advent Calendar 2022 8日目の記事です。
なぜ勝手に混乱してるのか
- 英単語の"continue"は「継続する」の意味
- for文などのループ構造で用いられた際、スキップの指示する
おいおいおい、継続するんかやめるんかどっちや…
どこまでをやって、どこからはやらないのか…
となりました。多分私ぐらいです。
continue文とは
continue文は、ループ構造において書かれた後の残りの処理をスキップし、次のループの最初からまた続けて処理をします。
<?php
for ($i = 0; $i <= 5; $i++) {
if ($i === 3) {
continue;
}
echo $i . PHP_EOL;
}
0
1
2
4
5
このように、3のときはecho
での出力をスキップし、ループをやめることなく5週目のループに入っています。
continueがある条件のときは「ここでやーめた!」となるわけですね。
リファレンス:continue文
continueの前後の処理はどんな感じ?
continueが書かれている前と後ろに処理を入れてみます。
<?php
for ($i = 0; $i <= 5; $i++) {
if ($i === 3) {
echo '< ヤッホー!' . PHP_EOL;
continue;
echo 'やっほー! >' . PHP_EOL;
}
echo $i . PHP_EOL;
}
0
1
2
< ヤッホー!
4
5
continueの前に書かれてあるものは処理されますが、後に書かれたものは処理されませんでした。
挨拶が返ってくることはなかったですね。。虚無
同じ条件式内でcontinueの後にいくら処理を書いても無視されてしまいます。
条件式内の一番最後に書くことになりますね。
結論
continue文は、
ループ内の処理はやめるけど、ループは継続する
「ここでやーめた!はい次行って!」と言ってるイメージです。
よくよく考えるとリファレンス等の"スキップ"の表記がぴったりで、納得します。
……んじゃもう名前skip
でよくね??
英単語"continue"の意味は「継続する」だよな……?
私の思ってる「継続する」じゃない可能性も無きにしもあらずだなと思い、英単語の意味も見てみました。
continueとは
(間断なく)続ける、継続する、持続する、(…し)続ける、続ける、(…を)(中断後また)継続する、断続する、(中断後に)続ける、(…と)引き続いて言う、(…に)継続させる
引用:Weblio英和辞書
ふむふむ、やっぱり「続ける、継続する」だな……
……
んんん?
(…を)(中断後また)継続する、断続する、(中断後に)続ける
!!!!!!
「中断後に続ける」!!!!!!
英単語って深いですね。
この処理をcontinue
と命名した人の気持ちがわかりました。
おわりに
私の心配のもとであるcontinue文について調べてから納得するまでを書きました。
単純な処理でも、さっと書いて実行してみると、より納得して頭に入りますね。
さらに、英単語の知識もつきました。
普段何気なく使ってる構文の英単語を辞書で見てみると、新たな学びがありそうです!