地点:
$b = true;
$c = 0;
$a = ($a ? ($a ? $b : $c) : ($c ? $a : $b));
我不知道如何计算a。
所以我知道这是一个速记运算符,通常是这样的情况:
$value ? true : false
含义
if $a = true { true } else { false };
所以:
if $a{
if $a{
true;}
else{
0;};
else{
if $0{
$a;}
else{
true;}
};
这是否使 $a 的值为 true?
最佳答案
$a
的值为 true
$b = true;
$c = 0;
$a = ($a ? ($a ? $b : $c) : ($c ? $a : $b));
简写可以这样解释:
if($a) {
if($a) {
$a = $b;
} else {
$a = $c;
}
} else {
if($c) {
$a = $a;
} else {
$a = $b;
}
}
因为 $a
因一开始就不存在而为 false,所以它会立即跳转到其中的 else 语句。因此,对您来说唯一重要的部分是:
if($c) {
$a = $a;
} else {
$a = $b;
}
0
与 false
相同,因此 $c
将返回 false,因此 $a
等于$b
,即true
。
编辑:
对引发的通知进行了一些讨论,但这未能说明通知并不是真正的错误,因此代码不会中断。结果不是注意: undefined variable :a
,如果不是我们确定$a
的值,“结果”(认为这些人的意思是输出)将是空白的code> 末尾带有 var_dump
。 问题在于 $a
的值会变成什么,而不是屏幕上显示的内容。
屏幕上显示的有关未设置变量的内容与 $a
的值无关。
如果执行以下代码,则通知并不是唯一实现的内容:
$b = true;
$c = 0;
$a = ($a ? ($a ? $b : $c) : ($c ? $a : $b));
var_dump($a);
所以输出是:
E_NOTICE : type 8 -- Undefined variable: a -- at line 5
bool(true)
抛出通知这一事实并不能阻止 $a
变为 true。
而且通知很容易被压制...
error_reporting(0);
$b = true;
$c = 0;
$a = ($a ? ($a ? $b : $c) : ($c ? $a : $b));
var_dump($a);
会导致$a
仍然为真,并且看不到通知。
bool(true)
关于php - 不确定 a 的值是多少,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35591311/