2010-12-07 3 views
0

可能性の重複:
What is the PHP ? : operator called and what does it do?PHPの構文は?そして、:

私は私が探していた何かの答えを見つけましたが、それらを使用するので、私はかなりの構文を理解していない、私が思うに、短いですタグ。コードは次のとおりです。

$temp = is_array($value) ? $value : trim($value); 

誰かがこの仕組みを説明できますか?私はこれが真の場合は値を返すことを意味し、偽の場合は値を返すことを意味すると思いますが、わかりません。 3つ以上の選択肢がありますか、それとも厳密に偽ですか?

+0

[参考:この記号はPHPで何を意味しますか?&=&!! @ * => - >> ++。=](http://stackoverflow.com/questions/3737139/reference-what-does-this-symbol-mean-in-php) – mario

答えて

3

あなたは正しいですか?これは条件付き演算子です。?:は3項演算子です。

<?php 

// Example usage for: Ternary Operator 
$temp = is_array($value) ? $value : trim($value); 

// The above is identical to this if/else statement 
if (is_array($value)) { 
    $temp = $value; 
} else { 
    $temp = trim($value); 
} 

?> 

詳細については、途中、このページの下を見てみましょう:

http://php.net/manual/en/language.operators.comparison.php

+0

*として知られています* 3項演算子 '.'が* 2項演算子として知られている限り:P – alex

0

01と同じ
if(is_array($value)) { 
    $temp = $value; 
} else { 
    $temp = trim($value); 
} 
1

$condition ? true : false?命令はそうあなたの例では、コードは、あなたが正しい

if(is_array($value)) 
    $temp = $value 
else 
    $temp = trim($value); 
0

と同じである

if($condition) 
    true 
else 
    false 

と同じです。 is_array($value)がtrueを返した場合、式は​​、そうでない場合は$temp = trim($value)と設定します。

0

厳密に2つの選択肢があります。あなたはそれを正しく解釈した。

if (is_array($value)) $temp = $value; 
else $temp = trim($value); 

あなたは3つの値を持つように、この構文をハックしたい場合は、これは、三項演算子は$temp = (condition1) ? true : (condition2) ? true2 : false;

+0

確かに、より明確なグループ化のために括弧を追加する価値はありますが、' $ temp = $ condition1? 'val1':($ condition2? 'val2': 'val3');そして、このように三項演算子を連鎖することは、本質的に読みにくいと主張する人もいます。 YMMV。 ;-) –

0

で行うことができます。その前にexpを変換しますか?ブールにより多くのオプションが必要な場合は、マルチを組み合わせるだけですか?:。

(con?trueorfalseiftrue:otherwise)? (con2?_:_):(con3?_:_) 
関連する問題