PHP多重逻辑运算符

PHP多重逻辑运算符,php,json,logical-operators,Php,Json,Logical Operators,试图找出最好的方法来做到这一点。 我有一个PHP函数,用于检查某个内容是否为真,如果为真,则返回一些JSON数据 我遇到的问题是,如果另一个为空,则其中一个可以返回数据,或者两者都为真 这就是我尝试过的: if( $logic_type === true && $description== 'null' ){ return json_encode( self::returnDataArray( $return_arrs ) ); } if( $description =

试图找出最好的方法来做到这一点。 我有一个PHP函数,用于检查某个内容是否为真,如果为真,则返回一些JSON数据

我遇到的问题是,如果另一个为空,则其中一个可以返回数据,或者两者都为真

这就是我尝试过的:

if( $logic_type === true && $description== 'null' ){
    return json_encode( self::returnDataArray( $return_arrs ) );
}

if( $description === true && $logic_type == 'null' ){
    return json_encode( self::returnDataArray( $return_arrs ) );
}

if($description=== true && $logic_type === true ){
    return json_encode( self::returnDataArray( $return_arrs ) );
}
那颗牙齿看起来太长了。 所以我试着:

if( $logic_type === true && $description== 'null' || $description === true && $logic_type == 'null' || $description=== true && $logic_type === true ){
    return json_encode( self::returnDataArray( $return_arrs ) );
}

但这仅在满足最后一个条件时有效。

您应该使用括号对条件进行分组

引自

使用括号,即使不是严格必要的,通常也会 通过使分组显式而非显式,提高代码的可读性 而不是依赖隐式运算符优先级和关联性

试一试


您必须将
$logic_type===true&&$description=='null'| |..
括在括号中,因为您使用的是
&&
|
。使用下面的代码

if( ($logic_type === true && $description== 'null') || ($description === true && $logic_type == 'null') || ($description=== true && $logic_type === true ))
{
    return json_encode( self::returnDataArray( $return_arrs ) );
}

这看起来像是使用exculsive或(异或B)的完美例子。意思是A或B,但不是两者都有。在本例中,您希望
$logic\u type
为null,或者
$description
为null,但不能同时为null。否则他们都是真的。因此,我们可以使用位异或将表达式简化为:

if( ($logic_type === 'null' ^ $description === 'null') || 
    ($logic_type === true && $description === true) )
{
    return json_encode( self::returnDataArray( $return_arrs ) );
}

请注意,只有当
$logic_type
$description
的唯一可能值为:
true
'null'

使用括号
($logic_type==true&$description='null')|(…)|(…)|(…)
仅当最后一个条件满足时返回文本“null”它只是
null
?它的字面意思是“null”,来自一个javascript变量。你是指空()还是字面上的“null”字符串?
if( ($logic_type === 'null' ^ $description === 'null') || 
    ($logic_type === true && $description === true) )
{
    return json_encode( self::returnDataArray( $return_arrs ) );
}