コードをそのまま実行すると、次のようになります。Notice: Undefined variable: a in myfile.php on line 4
したがって、私は$a
どこか早い段階で設定されていると仮定します。ただし、$a の前の値が何であれ、$a が true または false に評価できる場合、次の理由により、コードを実行した後でも $a は true になります。
$a が true の場合、最初の部分は $a = $b となり、$b = true であることがわかります。
if(TRUE) {
if(TRUE) {
$a = $b; //AND $b == TRUE
} else {
$a = $c;
}
} else {
...
}
$a が false の場合、2 番目の部分は $a = $b を再び生成します。
if(FALSE) {
...
} else {
if(0) { // 0 will equate to FALSE
...
} else {
// 0 is the same as FALSE so we end up again with $a = $b
$a = $b; //AND $b == TRUE
}
}
実際、このコードを実行すると、$a の値が両方とも true であることが示されます。
<?php
$a = false;
$b = true;
$c = 0;
$a = ($a ? ($a ? $b : $c) : ($c ? $a : $b));
echo $a;
$a = true;
$b = true;
$c = 0;
$a = ($a ? ($a ? $b : $c) : ($c ? $a : $b));
echo $a;