• ベストアンサー

PHPでのgoto文の実現方法

皆様のお知恵をお貸しください。 C言語やVBでは何かの処理を行って、継続不能なエラーが発生した場合は終了処理へ飛ばすようなgoto文(俗に言うgoto done)があります。 PHPではgoto文がサポートされていないようなのですが、皆様はphpでgoto doneを実現する場合どのような方法をとられていますか? 現在、私が思いつくのは終了関数を作って、その中でexit()することくらいなのですが、もっとgoto doneに近くてよい方法は無いものでしょうか? ※余談ですがリリース予定のPHP6からはgoto文が利用できるようですね。

質問者が選んだベストアンサー

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4856/10272)
回答No.1

>PHPではgoto文がサポートされていないようなのですが、 5.3以降でサポートのようですね。 >皆様はphpでgoto doneを実現する場合どのような方法をとられていますか? try { } catch() { } + throw でしょうか。 http://www.php.net/manual/ja/language.exceptions.php

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • GOTO命令のようなことをPHPで

    PHP4とmySQLで、以下のことがしたいのですが ・数字3文字の乱数を生成する ・DBに同じ値がないかチェックする ・同じ値が既にDBにあったときは乱数を生成するところからやり直す ・なければDBに書き込んで処理終了 ※DBには オートインクリメントのID | 乱数 の2フィールドを使用 ※乱数はintではなくvarcharとして書き込む PHPにgoto命令がないので、スマートなやり方ご存知の方いらっしゃいましたら教えてください。 あと数字3文字の組み合わせなので、DBに値が1000個入っているとそれ以上書き込めないので処理の中止(exit)を行いたいのですが、どこで分岐したものか悩んでますので、併せてご指導いただければ幸いです。 $rand1 = (0,99); $rand2 = (0,99); $rand3 = (0,99); $abc = $rand1.$rand2.$rand3. $sql = //省略 $result = $sql; if($abc == $result){ //重複アリ:この中の処理をどうするとスマートなのか、、、} elseif{ //重複してないのでDBに書き込みます }

    • ベストアンサー
    • PHP
  • Gotoを使わずに済みますか?

    VBA超初心者です。ヘルプだけで学習していますが、よくわかりません。印刷する時に、GT4かGU4の値が0の場合はエラーメッセージが出て終了し、いずれも0以外ならばその数値を印刷の開始と終了ページとして取得するプログラムを作ってみましたが、何度やってもうまくいかず、やむなく昔ベーシックで習ったGotoを使ってみました。 しかし、過去ログを見ると、Gotoは使わないほうが良いとの事。 この文でGotoをなくす方法をご教授下さい。お願いします。 Sub 印刷() 開始ページ = Range("GT4").Value 終了ページ = Range("GU4").Value If Range("GT4") = 0 Then GoTo 10 If Range("GU4") = 0 Then GoTo 20 入力結果 = MsgBox((開始ページ) & "ページから" & (終了ページ) & "ページを印刷しますか?", vbYesNo) If 入力結果 = vbYes Then ActiveWindow.SelectedSheets.PrintOut From:=開始ページ, To:=終了ページ, Copies:=1, Collate _ :=True GoTo 30 10: MsgBox ("未入力の項目があ~る!") GoTo 30 20: MsgBox ("入力ミスがあります!") 30: End If End Sub

  • PHPのif文でその処理を途中で抜けるにはどうすればよいでしょうか?

    PHPのif文でその処理を途中で抜けるにはどうすればよいでしょうか? for文やwhile文ではbreakやcontinueなどが使えるようですが、if文にはないのでしょうか? 条件分岐がいくつかあって、その一つを途中で抜けて次の条件分岐へと移行したいのですが、 exitを使ってしまうと、次へ行かずに処理が中止されてしまいますし、 どのようにすればよいのか分からず困っています。何かよい方法はないでしょうか?

    • ベストアンサー
    • PHP
  • GOTO命令

    現在GOTO命令を用いて、処理をしようとしていますが、一つの関数内でGOTO命令はOKなのですが、GOTO命令先の関数が違う場合はGOTOは使えないのでしょうか? つまり Private Sub CommandButton1_Click()   処理 back: end Sub Private Sub CommandButton2_Click()   処理 goto back end Sub 上記のようにGOTOのラベルが他の関数内にある時はつかえないのでしょうか?何か方法ないでしょうか?

  • [VB2005]処理を完全に中止する方法を教えて頂けませんか?

    VB2005で開発しています。 あるイベントからメソッドを呼び、そのメソッドも次のメソッドを呼ぶような 処理があるとします。 この場合に、最上位のイベント以外から、 このイベントの処理をすべて終了する方法はございませんか? 最上位のイベントであれば、 Exit Subと書けば、そのイベント内の処理はすべて終了されると思いますが、 それを、下位のメソッドで行いたいのです。 このようなことはできないのでしょうか? もし方法がございましたら、教えて頂きたいです。 ぜひ、よろしくお願いいたします。

  • Do whileとFor文の脱出処理について

    はじめまして。 VBについて素朴な質問なのですが For…Nextから抜けるにはExit for を使いDo…Loopから抜けるにはExit Doを使用しますが以下の場合はFor文の中でExit doを使用するのは可能なのでしょうか? Do while(条件) for i=1 to 12 if 条件 then exit do end if 処理1 next i 処理2 loop 本来ならfor文の中ではExit forを使用しますがfor文はDo while文 の中に含まれていますのでExit doでも出れると思ったのですがそうではないのでしょうか?ご回答よろしくお願いします。

  • phpの書き方

    php初心者です 長いコードを書く場合、getで送られてくる情報を元に2つのページを表示する場合(例えばHTMLは同じだけど表示内容が違う場合など) 1つのphpでif文で分岐させる方法と 2つのphpファイルを作って処理させる方法どちらがいいですか? 負荷とか、転送量、メリット、デメリットを教えてください 他に優れた方法はありますか? よろしくお願いします

    • ベストアンサー
    • PHP
  • DOSのIF文でつまづいています

    DOSのプログラムでつまづいています。 test.batの中身 ************************************************ if %1==start goto start else if %1==stop goto stop else goto error :start rem スタート処理 echo start%1 > test.txt :stop rem ストップ処理 echo stop%1 > test.txt :error rem エラー処理 echo error%1 > test.txt exit ************************************************* うまく処理できる方法を教えてください。

  • シェルからPHPを実行したときの戻り値について

    PHPについては、かなり初心者です。 とんちんかんな質問をするかもしれませんが、 ご容赦ください。 今、linux系のOSで、 シェルスクリプトからPHPを実行する処理を作っています。 「/usr/local/bin/php xxxx.php」 という感じです。 この戻り値を、「$?」で取得すると、 正常に終了した場合は「0」、 処理が落ちた場合は「255」 が表示されるようなのですが、 この戻り値について、0、255以外の値を戻したいと思っています。 PHP内部で、特定の条件に当てはまった場合は、「2」をreturnしたいと思っています。 そのreturn値を使って、シェルスクリプトでif文で、判定処理を行いたいのです。 シェルスクリプト側で、PHPでの処理結果を変数に受ける方法があれば、 必ずしも「$?」を使う必要はないのですが・・・、 「$?」で「2」を取得できるのが一番理想です。 何か方法をご存知の方がいらっしゃいましたら、 よろしくお願いします。

    • ベストアンサー
    • PHP
  • bashで、gotoのようなラベルによるジャンプ構文をしたいのですが、方法をご教授ください。

    bashで、gotoのようなラベルによるジャンプ構文をしたいのですが、方法をご教授ください。 今はif分毎で、エラー時にメール配信処理してますが、全て同じあて先配信なので、 簡潔に処理内容をまとめたいです。 echo "aaa" if [ $? -ne 0 ] then echo "error desu" > honbun.txt mailx -s "error" aaa@aaa.c.jp < honbun.txt exit 1 else echo "ok" fi echo "bbb" if [ $? -ne 0 ] then echo "error desu" > honbun.txt mailx -s "error" aaa@aaa.c.jp < honbun.txt exit 1 else echo "ok" exit 0