0

我目前的代码如下:

if ( ( $status == 'active' ) || 
     ( $status == 'full' ) ) {

我还需要包含一个 AND 语句。因此,如果 $status 是 full 或 active 并且 $position 匹配 'need photo' 或 'completed' 然后它会显示。如何包含 AND 语句?

我尝试了以下方法,但似乎没有用:

if ( ( $status == 'active' ) || 
     ( $status == 'full' ) && 
     ( $position == 'need photo' ) || 
     ( ( $position == 'completed' ) ) {

有什么帮助吗?谢谢!:-) 我对这一切都很陌生。我尝试了谷歌,但找不到明确的答案。

4

3 回答 3

3

&&具有更高的优先级,||因此您尝试的代码与以下内容相同:

if ($status == 'active' || ($status == 'full' && $position == 'need photo') || $position == 'completed') {

用简单的英语表示,如果其中一个statusactive,或者两者status都是full并且positionneed photo,或者positioncompleted

但你想要:

if (($status == 'active' || $status == 'full') && ($position == 'need photo' || $position == 'completed')) {

这意味着,如果statusactive或者statusfull,或者positionneed photo或者positioncompleted

于 2013-05-24T20:50:00.947 回答
1

根据有关运算符优先级的 PHP 文档AND优先于OR,因此您需要OR用括号对表达式进行分组:

if ( ($status == 'active || $status == 'full) && ($position == 'need photo' || $position == 'completed') ) {
    ...
于 2013-05-24T20:50:31.340 回答
0

我认为您只是缺少一些括号。您想要的是if ((A) && (B)),其中 A 和 B 是复杂表达式(包含两个子表达式的表达式)。

在您的情况下:A =( $status == 'active' ) || ( $status == 'full' )和 B =( $position == 'need photo' ) || ( $position == 'completed' )

所以,试试这个: if ( **(** ( $status == 'active' ) || ( $status == 'full' ) **)** && **(** ( $position == 'need photo' ) || ( $position == 'completed' ) **)** ) {

于 2013-05-24T20:55:14.877 回答