2009-08-14 13 views
55

可能性の重複:
quick php syntax questionPHPの構文の質問:疑問符とコロンはどういう意味ですか?

return $add_review ? FALSE : $arg; 

疑問符とコロンは何を意味するのですか?

おかげ

+4

正確な複製:http://stackoverflow.com/questions/889373/quick-php-syntax

if ($add_review) then { return FALSE; //$add_review evaluated as True } else { return $arg //$add_review evaluated as False } 

は、PHPで三オペアンプの詳細についてはこちらを参照してください。 - 了解 –

+0

よく似ているが、ほとんど同じタイトル。 –

+0

リンクをありがとう。 –

答えて

113

これはPHP ternary operator(また条件演算子としても知られる)である - 最初のオペランドが真で評価された場合に、他の第三のオペランドとして評価し、第二オペランドとして評価します。

式で使用できる「if」ステートメントと考えてください。いくつかの条件に依存する簡潔な割り当てを行う際に非常に役立ちます。

また、この簡単なバージョン(PHP 5.3以降)もあります。中間のオペランドを省略することができます。演算子は、真であれば第1オペランド、そうでなければ第3オペランドとして評価します。たとえば、次のように

$result = $x ?: 'default'; 

それは上記のコードは未定義のインデックス通知をスローしますつまり$ _GETや$ _POST変数を使用しているissetまたはa null coalescing operatorで、私たちは長いバージョンを使用する必要があることを防ぐために、時にあることを言及する価値がありますPHP7で導入されました:

$param = $_GET['param'] ?? 'default'; 
+12

PHP 5.3以降、三項演算子の中間部分を省略することもできます。式 'expr1?:expr3'は、' expr1'がTRUEと評価されれば 'expr1'を、そうでなければ' expr3'を返します。 – Chandrew

+0

良い点、私は更新します... –

14

これはif-else演算子の三項形式です。上記の文は基本的に次のように読み取ります:http://www.addedbytes.com/php/ternary-conditionals/

+0

この@cristianivascuを理解することを申し訳ありません。これはどのように読み取られますか?<?php echo($ active_page == 'home'? 'active': '');?> –

+1

$ active_pageの値は文字列 'home'と同じですが、 'active'が出力されます。それ以外の場合は空の文字列が出力されます。 –

関連する問題