- ベストアンサー
二つの条件を一度に行うには?
リファレンスブックなどで調べたのですが自力の解決には至らず質問させていただければと思います。 2つの条件をPHPで一度に行うにはどうしたらいいのでしょうか? 例えば if(isset($58)){ if($58 == "1"){ $a = "n"; }else{ $a = "y"; } echo $a; } な感じです。恥ずかしながらまったくの初心者で見てのとおり動いてはくれません。 この機能を実装するにはそのように書けばいいのでしょうか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
#1です。 相変わらずわからないのですが、「一度に行う」というのはif...if...と何度も書かずに一撃で判定してしまいたいということですか? もしそうなら次のように書きます。 if ( 条件1 && 条件2 && 条件3 ) { //すべての条件が合致する場合の処理 } else { //条件が一つでも合致しない場合の処理 } >$58に値が入っている場合、もし$58が1だったらnを出力、そうではない場合はnを出力 んん?? 両方ともnを出力するの? yでしょ?(笑) ということで、次のように書けます。 if ( isset( $58 ) && $58 == "1" ) { $a = "n" ; } else { $a = "y" ; } echo $a ; また、三項演算子を使えば次のようにも書けます。 echo ( isset( $58 ) && $58 == "1" ) ? "n" : "y" ; ついでですが、気をつけないといけないことをひとつ。 それは条件を並べる順番です。 &&の仕様として「最初の条件が偽なら以降の条件は判定しない」というのがあり、今回の条件はこれを利用しています。 なので逆に if ( $58 == "1" && isset( $58 ) ) とすると、$58が定義されていない場合にエラーが発生します。 ついでに最初の例文を添削すると、$58が定義されていない場合に$aが未初期化状態のまま出力されるし、定義されているときは$aを出力しません。 かならず$aを出力したいのなら条件判定の外に出力処理を置きましょう。 あと、$58 という変数ではエラーが出るはずですが、上記の説明ではとりあえず無視してます。 一度変数の名前の付け方についてマニュアルを読んでみてください。 #2さんのいうとおり、ツッコミどころが多くてどこから指摘してよいものやらですが、初心者とはそんなものですから気を落とさずに精進してください(笑)
その他の回答 (2)
- yambejp
- ベストアンサー率51% (3827/7415)
$58が無謀だからなのか,例がわるいのか・・・ 型判定と中身の確認をやっていいって何かに書いて ありました? ともかく質問するときはどのようなエラーがでているか をお書きになると回答者もわかりやすいかと。 今のままだと突っ込むところが複数合って、いまいち 指摘しづらいです。
お礼
回答ありがとうございました。 分かりにくい質問内容で大変すいませんでした。もう一度ソースをみて原因が何か探してみたいと思います。
- 0x131cc6e
- ベストアンサー率36% (42/115)
一度に行う、の意味がよくわからないのですが… どういうことがやりたいのでしょうか? 例に挙げているプログラムを言葉で表現すると 「ある変数が定義されており、その値が"1"なら変数aに"n"をセットするが、それ以外の値なら変数aには"y"をセットする。 変数が定義されていない場合は変数aの内容を出力する。」 ということになりますが、これと「一度に行う」の関連は? ひょっとして「判定してセットして出力したい」という事?
お礼
回答ありがとうございます。 すいませんでした。例は一部なのですが基本的には判定してセットして出力したいと思っています。 例では$58に値が入っている場合、もし$58が1だったらnを出力、そうではない場合はnを出力といった感じです。 よろしくお願いいたします。
お礼
ご丁寧な回答ありがとうございました。 以上の方法があるとは知りませんでした。もう一度ソースおよびPHPマニュアル等を見直し解決していきたいと思います。 今回はサポートしていただきありがとうございました。