为什么PHP在逻辑AND上没有为FALSE返回'0'?

dot*_*hen 0 php conditional logical-operators

为什么PHP 0在逻辑AND返回FALSE时返回,但0在条件AND返回FALSE时不返回?见证人:

php > function a(){
php { echo "a";
php { return FALSE;
php { }

php > function b(){
php { echo "b";
php { return TRUE;
php { }

php > echo (a() && b())."\n";
a
php > 

php > echo (a() & b())."\n";
ab0
php >
Run Code Online (Sandbox Code Playgroud)

请注意,第二个echo语句以0,但第一个语句不以.为什么?

dec*_*eze 5

&&返回一个布尔值.false 转换为字符串时的布尔值是''空字符串.
&是一个按位和(不是"条件和",无论是什么),它产生一个数字(或二进制blob,取决于参数)作为结果.在这种情况下,操作产生数量0.