とあるPHPプログラム中に下記のような行があります。

これはどのような処理をしているものかわからなかったため質問させてください。

$foo['aaa'] = $foo['aaa'] ? $foo['aaa']:POO;

なお、「POO」は定数として定義してあるものということはわかっています。
わからなかったのは文中にいきなり「?」と「:」が出てきているので、これらがどのような処理が行われるものなのか、です。
できればPHPのマニュアルで調べたかったのですが、どう検索すれば出てくるのか見当がつかなかったもので、こちらで質問させていただきました。
PHPのマニュアルの該当箇所を教えていただける等でも結構ですので、どなたかわかる方はお教えいただけますでしょうか。
よろしくお願いいたします。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2007/04/08 22:53:51
  • 終了:2007/04/08 23:05:03

ベストアンサー

id:Kumappus No.2

くまっぷす回答回数3784ベストアンサー獲得回数1852007/04/08 23:00:47

ポイント45pt

http://php.benscom.com/manual/ja/language.operators.comparison.p...

三項演算子です。

(expr1) ? (expr2) : (expr3) という式は、式1 が TRUE の場合に 式2 を、 式1 が FALSE の場合に 式3 を値とします。

$foo['aaa'] = $foo['aaa'] ? $foo['aaa']:POO;

の場合は$foo['aaa']がtrue

(どういう場合にfalseになるかは

http://www.res-system.com/item/127

を参照)

ならばそのまま何もしない、falseならば固定値POOを入れる、という処理です。

例えば未設定のままの変数を作りたくない場合の処理ですね。

id:n_maco2

ありがとうございます。

勉強してみたいと思います。

2007/04/08 23:04:35

その他の回答(1件)

id:b-wind No.1

b-wind回答回数3344ベストアンサー獲得回数4402007/04/08 22:58:13

ポイント28pt

そういう演算子です。

リンク先の下のほうに説明があります。


「3項演算子」と呼ばれる事もありますが、それは正確ではなく「3項演算子」分類されるもののうち一つと言うのが本来の形です。

ただし、自分の知る全ての言語で3項演算子はこれ一つしかありません。

id:n_maco2

いつもありがとうございます

そういえば名前だけは聞いたことがありました。勉強してみたいと思います。

2007/04/08 23:03:53
id:Kumappus No.2

くまっぷす回答回数3784ベストアンサー獲得回数1852007/04/08 23:00:47ここでベストアンサー

ポイント45pt

http://php.benscom.com/manual/ja/language.operators.comparison.p...

三項演算子です。

(expr1) ? (expr2) : (expr3) という式は、式1 が TRUE の場合に 式2 を、 式1 が FALSE の場合に 式3 を値とします。

$foo['aaa'] = $foo['aaa'] ? $foo['aaa']:POO;

の場合は$foo['aaa']がtrue

(どういう場合にfalseになるかは

http://www.res-system.com/item/127

を参照)

ならばそのまま何もしない、falseならば固定値POOを入れる、という処理です。

例えば未設定のままの変数を作りたくない場合の処理ですね。

id:n_maco2

ありがとうございます。

勉強してみたいと思います。

2007/04/08 23:04:35
  • id:Kumappus
    C言語ではよく使われる(けど読みにくくなることも多いと批判もある)書き方ですね。
    http://ja.wikipedia.org/wiki/%E4%B8%89%E9%A0%85%E6%BC%94%E7%AE%97%E5%AD%90

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません