我有简单的代码
$value = 5;
$string = 'Abc';
var_dump(($value > 0) || (strlen($string) == 2));
var_dump(($value > 0) | (strlen($string) == 2));
只有更改的内容是返回值的类型(第一个是boolean
,第二个是int
)。 |
和||
之间还有另一个区别吗?我可以换一个吗?
实时测试:http://sandbox.onlinephpfunctions.com/code/548ab723cbd156be70a596978427fbd73ce4639f
答案 0 :(得分:5)
var_dump(($value > 0) || (strlen($string) == 2));
||
是一个逻辑逻辑操作符,请参阅http://php.net/manual/de/language.operators.logical.php
var_dump(($value > 0) | (strlen($string) == 2));
|
是一个按位运算符,请参阅http://php.net/manual/de/language.operators.bitwise.php
当然,您可以将|
更改为||
,但您无法获得相同的结果;)您的代码有一点解释,但您应该真正阅读以下文档:和逻辑运算符:
你已经回答说,两者都不这样做:
var_dump(($value < 0) || (strlen($string) == 2));
- &gt;返回布尔值true
var_dump(($value < 0) | (strlen($string) == 2));
- &gt;返回一个整数1
如果你这样做:
var_dump(true === 1);
你会得到假,因为整数1不是布尔值,即使:
var_dump(true == 1);
或
var_dump(true === (bool)1);
将返回true(==
不检查类型,请参阅文档,并且(bool)将整数1转换为布尔值true(请参阅http://php.net/manual/de/language.types.boolean.php#language.types.boolean.casting以了解什么是false什么是真的。)