我有$first
和$second
。它们可以包含值0
或1
。
if ( $first AND $second ) {
// True
} else {
// False
}
我的想法(和谷歌搜索)告诉我,只有$first == 1
和$second == 0
时结果为 true ,反之亦然。但当这两个变量都是1
时,结果是 true 。
我不明白它是如何运作的。
答案 0 :(得分:6)
您的Google搜索失败了。 PHP的type juggling表示1
相当于TRUE
而0
相当于FALSE
。 (另见type comparisons)。因此,如果两个值均为1
,则if语句的计算结果为TRUE
。如果其中一个或两个值均为0
,则评估为FALSE
。
<?php
$one = 1;
$zero = 0;
if ($one && $one) {
echo "true\n";
}
else {
echo "false\n";
}
if ($zero && $zero) {
echo "true\n";
}
else {
echo "false\n";
}
if ($one && $zero) {
echo "true\n";
}
else {
echo "false\n";
}
if ($zero && $one) {
echo "true\n";
}
else {
echo "false\n";
}
节目输出
true
false
false
false
答案 1 :(得分:1)
在PHP中,所有值都是&#34; truthy&#34;或&#34; falsy&#34;在表达式中。
如果值包含某些内容,则可以说它是真实的。因此,transform
,1
,"one"
或[1,2,3]
所有&#34;等值包含&#34;某事,并将被解释为真实。
归零或以某种方式为空的值是假的。例如。 true
,0
,""
和[]
。
PHP文档中有table of how values are interpreted。
您也可以试验,然后将其输出到您的网站:
false