• ベストアンサー

三項演算子について、教えて下さい。

いつもお世話になります。 今回は、三項演算子を教えて下さい。 【その1】 if($a == "$x"){ $d = 0; }else{ $d = $a; } ↑と↓は、同じなのでしょうか? また、( )は必要なのでしょうか? ($a == "$x") ? ($d = 0) : ($d = $a); +----------------------------------------------------- 【その2】 if($s < 1){ if($a == "$x"){ $d = 0; }else{ $d = $a; } }else{ if($a == "$x"){ $d = 0; }else{ $d = $a + 10; } } ↑と↓は、同じなのでしょうか? ($s < 1) ? (($a == "$x") ? ($d = 0) : ($d = $a)) : (($a == "$x") ? ($d = 0) : ($d = ($a + 10))); よろしくお願いします。だんだん迷宮に入ってきました。

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

  • ベストアンサー
  • yatokesa
  • ベストアンサー率40% (201/496)
回答No.1

その1 $d = $a == $x ? 0 : $a; その2 $d = $a == $x ? 0 : ($s < 1 ? $a : $a + 10); $d = $a == $x ? 0 : $a + ($s < 1 ? 0 : 10); #ちょっとアレンジ ()基本的には演算子の優先順位があるので不要ですが、ソースを見やすくするためには適度に入れた方がよいと思います。

waterclock
質問者

お礼

どうもありがとうございます。 なるほど、そうですね。 $d = にする方が良いですね。 余りに、if() else()のコードが増えてきたので、 コードが長々になり、そこで、三項演算子なるものを見つけたのですが、 初心者には、やはり、if , else を使った方が、間違いが少ないかも しれないですね。 でも、進歩の為には必要ですので、勉強になりました。 不眠でやっていたので、ちょっと仮眠してから、やってみます。 どうもありがとう。

その他の回答 (1)

  • osamuy
  • ベストアンサー率42% (1231/2878)
回答No.2

【その1】 同じで、括弧は不要ですが、三項演算子を使うなら以下のように書くのが一般的かと: $d = $a == "$x" ? 0 : $a ; 【その2】 多分同じだと思いますが、こう書いた方が分かりやすいかと: if ( $a == "$x" ){ $d = 0; } elseif ( $s < 1 ){ $d = $a; } else { $d = $a + 10; } $aの値が数値であるなら、こっちの方が分かりやすいかも: $d = $a == "$x" ? 0 : $a ; if ( $s >= 1 ){ $d += 10; } 三項演算子は、if文が値を返せないCの制限をフォローするためにできたものですので、戻り値を活用する記述にすると良いと思います。

waterclock
質問者

お礼

色々とお世話になります。 レス、ありがとうございます。 ちょっと、寝てから、やってみます。 ありがとうございました。

waterclock
質問者

補足

もうひとつ教えて下さい。 例えば、1 < $d < 10 という時は、 私のレベルでは、 if(($d > 1) && ($d < 10){ $d == $abc } というコードしか思いつかないのですが、 もっと、賢いコードは無いでしょうか? よろしければ、教えて下さい。 お願いします。

関連するQ&A

専門家に質問してみよう