|之间的区别和||用PHP

时间:2015-11-20 09:51:28

标签: php

我有简单的代码

$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

1 个答案:

答案 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什么是真的。)