『ボヘミアン・ラプソディ』はなぜ人々を魅了したのか >>

いつもお世話になります。 今回は、三項演算子を教えて下さい。

【その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)));

よろしくお願いします。だんだん迷宮に入ってきました。

A 回答 (2件)

その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); #ちょっとアレンジ

()基本的には演算子の優先順位があるので不要ですが、ソースを見やすくするためには適度に入れた方がよいと思います。
    • good
    • 0
この回答へのお礼

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

お礼日時:2004/09/25 11:30

【その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の制限をフォローするためにできたものですので、戻り値を活用する記述にすると良いと思います。

この回答への補足

もうひとつ教えて下さい。

例えば、1 < $d < 10 という時は、
私のレベルでは、
if(($d > 1) && ($d < 10){ $d == $abc }
というコードしか思いつかないのですが、
もっと、賢いコードは無いでしょうか?

よろしければ、教えて下さい。 お願いします。

補足日時:2004/09/25 11:33
    • good
    • 0
この回答へのお礼

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

お礼日時:2004/09/25 11:33

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング