($some_var) ? true_func() : false_func();
これはphpで何ですか、そしてこれは何をしますか?存在、ブール、または何?
それはこれと同じことです:
if ($some_var) {
true_func();
}
else {
false_func();
}
$some_val
が true の場合、 の前に関数を実行します:
。
$some_val
が false の場合、 の後に関数を実行します:
。
三項演算子といいます。
通常、変数に値を割り当てるときに式として使用されます。
$some_var = ($some_bool) ? $true_value : $false_value;
これは、最も悪用されているプログラミング構造の 1 つです (私の意見では)。
PHP マニュアルから引用: 比較演算子
<?php
// Example usage for: Ternary Operator
$action = (empty($_POST['action'])) ? 'default' : $_POST['action'];
// The above is identical to this if/else statement
if (empty($_POST['action'])) {
$action = 'default';
} else {
$action = $_POST['action'];
}
?>
三項演算子です。
書く代わりに
if ($a < $b) {
$minVal = $a;
} else {
$minVal = $b;
}
次のように書くことができます
$minVal = ($a < $b) ? $a : $b;
実際には三項演算子です。(つまり、演算子 ?: は三項演算子です)。
($some_var) ? func1() : func2();
「$some_var」はブール式です。true と評価された場合は 'func1()' が実行され、それ以外の場合は 'func2()' が実行されます。
まあ、それが書かれている方法は、それはちょうど
func();
( の場合$somevar
はtrue
を呼び出しfunc
ます。そうでない場合は、 も呼び出しfunc
ます!)
ブール値をチェックします:
ブール値に変換する場合、次の値は FALSE と見なされます。
the boolean FALSE itself the integer 0 (zero) the float 0.0 (zero) the empty string, and the string "0" an array with zero elements an object with zero member variables (PHP 4 only) the special type NULL (including unset variables) SimpleXML objects created from empty tags
他のすべての値は TRUE と見なされます (すべてのリソースを含む)。
こちらもご覧ください: PHP 型比較表