PHP多重逻辑运算符
试图找出最好的方法来做到这一点。 我有一个PHP函数,用于检查某个内容是否为真,如果为真,则返回一些JSON数据 我遇到的问题是,如果另一个为空,则其中一个可以返回数据,或者两者都为真 这就是我尝试过的: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 =
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 ) );
}