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

时间:2011-08-11 08:11:14

标签: php

在Javascript和Python中,0 || 1返回1

但在PHP中,0 || 1返回true。

如果我希望0 || 1在PHP中返回1怎么办?

另一个例子,

$aarray(array('test'))

我希望$a['test'] || $a[0] || array()返回array('test'),怎么做?

7 个答案:

答案 0 :(得分:12)

其他答案似乎只关心将布尔值转换为整数。如果第一个值是假的(0false等等。),我认为你真的希望第二个值成为结果吗?

对于其他语言的行为,我们在PHP中最接近的是短手“三元”运算符:0?:1

可以在您的脚本中使用,例如:$result = get_something() ?: 'a default';

有关详细信息,请参阅ternary operator documentation

答案 1 :(得分:9)

因为0 || 1是一个布尔表达式,所以它假定你想要一个布尔结果。

您可以将其强制转换为int:

echo (int)(0 || 1);

答案 2 :(得分:3)

在PHP中,运算符||返回一个布尔值,无论是真还是假。

你可能想要的是这样的:$result = (0 || 1) ? 1 : 0;

答案 3 :(得分:2)

您可以使用

(0 || 1) ? 1 : 0

答案 4 :(得分:1)

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

答案 5 :(得分:1)

您可以使用强制转换为整数

echo (int)(0||1);

答案 6 :(得分:1)

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

虽然它仅适用于1. (int)(0 || 2)也会返回1.