非常基本的PHP - IF和IF ...?

时间:2013-05-24 20:47:25

标签: php

我目前的代码如下:

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

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

我尝试了以下操作,但它似乎不起作用:

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

有任何帮助吗?谢谢! :-)我对这一切都很新。我试过Google,但找不到明确的答案。

3 个答案:

答案 0 :(得分:3)

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

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

以简单英语表示,如果statusactive,或status fullpositionneed photoposition,则为completedif (($status == 'active' || $status == 'full') && ($position == 'need photo' || $position == 'completed')) {

但你想要:

status

这意味着,如果activestatusfullposition,则need photoposition或{{1} }是completed

答案 1 :(得分:1)

根据PHP documentation on operator precedenceAND优先于OR,因此您需要将OR表达式与括号分组:

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

答案 2 :(得分: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' ) **)** ) {