Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP三元定义?_Php_Constants - Fatal编程技术网

PHP三元定义?

PHP三元定义?,php,constants,Php,Constants,有人能解释一下这个定义是如何产生的吗 define( 'A_DEFINE', B_VALUE ? 'yes' : 'no' ); 这似乎是一个三元运算符结构,但不太确定它们是如何组合在一起的。在PHP中,未定义的常量计算为true。从: 如果使用未定义的常量,PHP会假定您指的是常量本身的名称,就像将其称为字符串一样(constantvs“constant”)。发生这种情况时,将发出级别为E_的错误通知 你有: define( 'A_DEFINE', B_VALUE ? 'yes' : 'no

有人能解释一下这个定义是如何产生的吗

define( 'A_DEFINE', B_VALUE ? 'yes' : 'no' );

这似乎是一个三元运算符结构,但不太确定它们是如何组合在一起的。

在PHP中,未定义的常量计算为true。从:

如果使用未定义的常量,PHP会假定您指的是常量本身的名称,就像将其称为字符串一样(
constant
vs
“constant”
)。发生这种情况时,将发出级别为
E_的错误通知

你有:

define( 'A_DEFINE', B_VALUE ? 'yes' : 'no' );
在上面的陈述中,就是这样。如果
B_值
的计算结果为true(这是因为它没有斜体),则将
A_常量的值设置为
yes
,否则将其设置为
no

define('A_DEFINE', B_VALUE ? 'yes' : 'no' );
var_dump(B_VALUE, A_DEFINE); // Just checking what the outputs are
上述产出:

string(7) "B_VALUE"
string(3) "yes"

假设B_值有一个布尔值,这意味着如果B_值等于true 然后一个_定义变为“是”,否则变为“否”

比如说

$a = $b ? "yes" : "no";

if ($b == true) {

    $a = "yes";

} else {

    $a = "no";

}
三值化只是一种更具可读性且非常快速的方法


希望这有帮助

可能是@JayBlanchard的复制品我敢打赌你等不及了《等待黄金》;)这是一个“可能的”重复@AmalMurali,因为它描述了三元定义的工作原理。@JayBlanchard:虽然我认为这回答了外部问题,但我认为它没有解决重要的问题,即“未初始化的常量的计算结果为真”。我认为这可能是OP对这一特定语句的误解,但这只是我的猜测。如果OP没有进一步的细节,就很难知道@AmalMuraliBy
A_常量
你的意思是
A_DEFINE
?如果B_值被初始化,那么你会得到相同的计算结果吗?