PHPのgoto文の使い方を初心者向けに解説!使わない方がいいけど学んでおこう
生徒
「PHPのコードを見ていたらgotoって書かれている部分があったんですが、これって何ですか?」
先生
「gotoは、プログラムの実行位置を好きな場所にジャンプさせる命令だよ。ただし、PHPではあまり使うことはおすすめされていないんだ。」
生徒
「どうしてあまり使わないほうがいいんですか?」
先生
「わかりやすく説明していくから、一緒にgotoの使い方や注意点を学んでいこう!」
1. PHPのgoto文とは?基本をやさしく説明
goto(ゴートゥー)文は、PHPで「この場所にジャンプしてね」と命令するための文です。
たとえば、ある処理をスキップして、後ろの処理に飛びたいときに使います。
実行される位置を自由に変えられるので便利そうに見えますが、プログラムがとても読みにくくなるという欠点があります。
そのため、初心者にはあまりおすすめされませんが、「こういう仕組みもあるんだな」と理解しておくのは大事です。
2. PHPのgoto文の書き方と構文
基本の書き方はとてもシンプルです。goto ラベル名;と書いて、ジャンプしたい先にはラベル名:とコロン(:)を付けます。
<?php
$number = 5;
if ($number < 10) {
goto small;
}
echo "10以上の数字です";
small:
echo "10未満の数字です";
?>
このコードでは、goto small;によって処理がsmall:にジャンプして、「10未満の数字です」が表示されます。
3. goto文の実行結果を確認してみよう
上のコードを実行すると、以下のような結果が出力されます。
10未満の数字です
echo "10以上の数字です";の行は、gotoでジャンプしてしまったので、実行されませんでした。
4. 日常の例えでgoto文をイメージしよう
たとえば、テレビの録画番組を見ていて「途中から見たい」と思ったとき、早送りボタンを押しますよね。
gotoは、それと似たような動きで、「この位置から続きを再生(実行)して!」と指示するボタンのようなイメージです。
ただし、途中を飛ばしてしまうと、内容が分かりづらくなることがありますよね。それと同じで、gotoを使うとコードの流れが分かりにくくなってしまうのです。
5. gotoが使える場面と制限について
PHPのgotoは、主に同じ関数の中やスクリプト内でしか使えません。
- 関数の外で使うことが多い
- 他の関数やループの外にはジャンプできない
また、ラベル名は重複させてはいけません。ひとつのラベル名は1回だけ使うようにしましょう。
6. gotoの代わりに使われる制御構文
多くの場面では、gotoの代わりにif文やbreak、continue、returnを使ったほうがわかりやすいです。
たとえば、gotoの代わりにif文を使った例です。
<?php
$number = 5;
if ($number < 10) {
echo "10未満の数字です";
} else {
echo "10以上の数字です";
}
?>
このように書けば、gotoを使わなくても同じ動きができますし、初心者でも理解しやすいコードになります。
7. gotoが嫌われる理由とは?
gotoは「スパゲッティコード」と呼ばれる読みにくいコードを生みやすいです。
スパゲッティのように、どこからどこに処理が飛んでいるのか分かりづらくなるため、大きなプログラムになるほど混乱の原因になります。
そのため、PHPだけでなく他のプログラミング言語でもgotoの使用は推奨されていません。
8. PHP初心者が覚えておきたいポイント
PHPのgotoは、使えるけど使わない方が良い命令です。初心者のうちは、if文やswitch文、while、forなどの基本的な制御構文をしっかり身につけることが大切です。
コードの読みやすさ、保守のしやすさ(あとから修正しやすいこと)を考えると、gotoの代わりに他の方法を選ぶのがベストです。