首页 > 解决方案 > 逻辑与运算符的奇怪行为

问题描述

有没有人能够解释这种行为:

<?php

$var1 = true;

$var2 = 0;

$var3 = $var1 AND $var2;

var_export($var3); // Output: true

var_export(true AND 0); // Output: false    

var_export($var1 AND $var2); // Output: false

输出来自 PHP 7.0

为什么第一个输出true是第三个输出false

$var2顺便说一句: is0或.无关紧要false。行为是相同的。

@all:我知道我应该使用&&而且我总是这样做!

标签: phpoperatorsboolean-expression

解决方案


它实际上是因为&&不同于AND.

$var1 = true;
$var2 = 0;

$var3 = $var1 && $var2;
var_export($var3); // Output: false

$var3 = $var1 AND $var2;
var_export($var3); // Output: true

&&你实际写的情况下$var3 = ( $var1 && $var2 )

AND你实际写的情况下( $var3 = $var1 ) AND $var2

那是因为=then 具有更大的优先级AND,但是then&&具有更大的优先级=


推荐阅读