- ベストアンサー
break後も変数を維持するには、どうすればいいで
break後も変数を維持するには、どうすればいいでしょうか? switch文とかで、breakした後も、変数へ格納した値を利用するには、どうすればいいのでしょうか? switch($hoge) { case 0: $a=24; break; case 1: echo $a;//ここで、24と表示させたい break; static変数とかを使うのでしょうか?
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
#ANo.1への補足↓に対して >例えば、switchの上にもループなどの条件式があって、 >その内容によって$hogeに入る値が、 >「case 0」になったり、「case 1」になったり、あるいは両方を繰り返したりする場合には、 >どうすればよいでしょうか? 何もしなくていいです。スコープ内であれば保持されたままです。もし表示されないとしたら、それは{値をセットしていない|自分でクリアしている}ということです(つまりロジックのどこかに誤りがあります)。 (e.g.) <?php for ($i = 0; $i < 2; $i++) { switch ($i) { case 0: $a = 24; break; case 1: echo $a; // 24が表示される break; } } ?> 上記ソースでは 24 が表示されると思います。
その他の回答 (3)
- jjk65536
- ベストアンサー率59% (66/111)
$hogeが0でも1でも24を代入したいのですか? switch($hoge){ case 0: $a = 24; echo $a; break; case 1: $a = 24; echo $a; break; } だったらこうだと思いますが。 $hogeが0,1で24表示、2以上では表示しない、というプログラムになりますね。 ちなみにこの場合、普通はこう書きます。 switch($hoge){ case 0: case 1: $a = 24; echo $a; break; } なんか、質問の意図がわかりません。 どういうプログラムにしたいのか具体例があればもう少し回答できるかも。
お礼
回答ありがとうございます。 やりたかった内容は、ほぼ、2さんより、回答いただいた内容です。 自分で試したときは何故かうまくいかず、 何でかな? と思い、質問してみました。 多分、何かを勘違いしていたみたいなので、 疑問は無事解決しました。 >なんか、質問の意図がわかりません。 >どういうプログラムにしたいのか具体例があればもう少し回答できるかも。 返事が遅くなりましたが、 色々回答いただき、ありがとうございましたー
- okbakasine
- ベストアンサー率27% (67/242)
質問者はスコープについて勉強しよう。
- jjk65536
- ベストアンサー率59% (66/111)
まず、case 0とcase 1を同時に通過することはありえませんよね。 switch($hoge){ case 0: $a = 24; break; } echo $a; break後に値を表示するならこうすると思います。
補足
回答ありがとうございます。 例えば、switchの上にもループなどの条件式があって、 その内容によって$hogeに入る値が、 「case 0」になったり、「case 1」になったり、あるいは両方を繰り返したりする場合には、 どうすればよいでしょうか? break;したら、処理が終了するので、 変数へ格納した値は、そこで全部破棄されてしまう、しかないのでしょうか?
お礼
回答ありがとうございます。 >上記ソースでは 24 が表示されると思います。 試してみたら、確かに24で表示されました。 これがやりたかったのですが、 自分でやったときは、うまくいきませんでした。 ありがとうございましたー