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

cly*_*ish 6 php

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

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

如果我想在PHP中0 || 1返回1该怎么办?

另一个例子,

$aarray(array('test'))

我想$a['test'] || $a[0] || array()回来array('test'),怎么办?

sal*_*the 12

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

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

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

有关详细信息,请参阅三元运算符文档.


Dan*_*man 9

因为它0 || 1是一个布尔表达式,所以它假设您需要一个布尔结果.

你可以将它强制转换为int:

echo (int)(0 || 1);
Run Code Online (Sandbox Code Playgroud)

  • 在这种情况下,echo(int)(0 || 5)将返回1而不是5 (2认同)