为什么在php中0 || 1返回true?

6
在Javascript和Python中,0 || 1返回1。但是在PHP中,0 || 1返回true。如果我想让0 || 1在PHP中返回1该怎么办?
另一个例子,$aarray(array('test'))。我想让$a['test'] || $a[0] || array()返回array('test'),该怎么做?

1
逻辑运算符:$a || $b - - 如果 $a 或 $b 中有一个为 TRUE,则返回 TRUE。 - Yoshi
7个回答

12
其他答案似乎只关心将布尔值转换为整数。我认为你真正想要的是,如果第一个值为假值(0false等),则将第二个值作为结果?
对于其他语言的行为,PHP 中最接近的语法是简写的“三元”运算符:0?:1
这可以在你的脚本中使用,例如:$result = get_something() ?: 'a default'; 有关详细信息,请参见三元运算符文档

在 PHP 5.3 中, $a['test'] ?: $a[0] ?: array(); 在 PHP 版本 < 5.3 中, $b = $a['test'] or $b = $a[0] or $b = array(); 然后使用 $b。 - clyfish

9
因为0 || 1是一个布尔表达式,它会假设你想要一个布尔结果。你可以将其转换为整数类型:
echo (int)(0 || 1);

2
在这种情况下,echo(int)(0 || 5)将返回1而不是5。 - Puggan Se

3
在PHP中,运算符||返回布尔值,即true或false。
您可能想要的是像这样的内容:$result = (0 || 1) ? 1 : 0;

2
您可以使用:

标签

(0 || 1) ? 1 : 0

1
if(0||1)
    return 1;
else return 0;

1

你可以使用强制类型转换将其转换为整数

echo (int)(0||1);

这个失败是因为"(int)0||1"与"((int)0)||1"相同,而不是"(int)(0||1)"。 - Puggan Se

1

将结果转换为整数; P (int)(0 || 1)

虽然它只对1有效。 (int)(0 || 2) 也会返回1。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接