2013-01-24 97 views
0

由于某种奇怪的原因,我无法调试这为我的生活.. $ this-> input-> post('post_page')= 10 ....我回显变量并且它在屏幕上打印10。 当它应该是真的时,这会一直返回假。 所以...有人可以帮我解决这个问题吗?我试图在每个检查周围放置单独的括号并更改||到OR ..仍然没有。IF statement not working with OR

这里是我的代码仍然:

if($this->input->post('post_page') <> 10 
       || $this->input->post('post_page') <> 25 
       || $this->input->post('post_page') <> 50 
       || $this->input->post('post_page') <> 75) { 
      return false; 
     } 
+2

你想在这里做什么?这个if总是会返回false。 – looneydoodle

回答

1

我认为你应该使用

if(!($this->input->post('post_page') == 10 
       || $this->input->post('post_page') == 25 
       || $this->input->post('post_page') == 50 
       || $this->input->post('post_page') == 75)) { 
      return false; 
} 
5

<>相当于不相等。

10不等于25因此它将进入if语句并返回false;

事实上,它总是会进入,如果声明,无论数量

的你可以代替这样做:

if($this->input->post('post_page') <> 10 
       && $this->input->post('post_page') <> 25 
       && $this->input->post('post_page') <> 50 
       && $this->input->post('post_page') <> 75) { 
      return false; 
     } 

在伪代码:

IF 
MY NUMBER IS NOT 10 
AND IT IS NOT 25 
AND IT IS NOT 50 
AND IT IS NOT 75 
    RETURN FALSE 

甚至更​​好:

$allowedNumbers = array(10,25,50,75); 
if(!in_array($this->input->post('post_page'), $allowedNumbers)) { 
    return false; 
} 

也更容易将新项目添加到列表中。你添加到数组中的任何数字都不会返回false。

这一个伪代码:

ALLOWED NUMBERS ARE 10,25,50,75 
IF(MYNUMBER IS NOT IN THE LIST OF ALLOWED NUMBERS) 
    RETURN FALSE 
+0

我很困惑...我想我总是会在IF语句中感到困惑,但是IF 10不等于10,然后返回false ..但它确实...我必须做&&而不是||? – Peanut

+0

我想做的是说,如果他们输入的内容不等于这些数字中的任何一个,则返回false,因为它必须是这4个数字中的任意一个。 – Peanut

+0

@Peanut,谢谢澄清,我更新了答案,实际上你可以交换||为&& – cowls

0

翻译布尔: 或真或假或真或真。 该表达式为真,因此它返回false。

0
(       # 
    (A is not B)   # IS ALWAYS TRUE 
    OR (A is not C)   # -------------------------- 
    OR (A is not D)   # Unless 2 conditions (AND): 
    OR (A is not E)   # . A is not B 
)       # . B = C = D = E 

所以,是的,你的情况,这将永远是假的,对不起你。