2015-03-30 3 views
-3

У меня есть следующий пример:Понимание тройной оператор

$a=false; 
$b=true; 
$c=false; 
if($a ? $b : $c){ 
    echo 'false'; 
} else { 
    echo 'true'; 
} 

Я не могу понять это утверждение, и мне нужно чтобы кто-то объяснить мне, как это работает ...

+3

Я голосую закрыть этот вопрос не по теме, потому что он неопределенный, широкий и, вероятно, просто включает в себя чтение руководства. – PeeHaa

+1

Единственное, что вам нужно сделать, чтобы понять это, - это «распаковать» тернарное выражение '$ a? $ b: $ c' затем заменить результат внутри 'if' [Ternary Operator] (http://php.net/manual/en/language.operators.comparison.php#language.operators.comparison.ternary) –

ответ

1
$a=false; 
$b=true; 
$c=false; 
if($a ? $b : $c){ 
    echo 'false'; 
} else { 
    echo 'true'; 
} 

расширяется:

$a=false; 
$b=true; 
$c=false; 
if ($a) { 
    $temp = $b; // TRUE 
} else { 
    $temp = $c; //FALSE 
} 
if($temp){ 
    echo 'false'; 
} else { 
    echo 'true'; 
} 

потому $a ложно, $temp присваивается $c значение (которое является ложным), второй, если проверки, если $ темп верно (который не является), так еще выполняется оператор echo 'true'

1

Это эквивалент этого:

<?php 

$a = false; 
$b = true; 
$c = false; 

if(($a && $b) || (!$a && $c)) { 
    echo 'false'; 
} else { 
    echo 'true'; 
} 
+2

Хмм , теперь мне интересно, не считает ли кто-то мой ответ неправильным или кто-то расстраивается, что я отвечаю на вопрос, который, по его мнению, не должен быть здесь вообще. – tmt

Смежные вопросы