0

出于某种奇怪的原因,我无法终生调试它.. $this->input->post('post_page') = 10...。我回显了变量,它确实在屏幕上打印了 10。当它应该是真的时,这会一直返回假......所以......有人可以帮我解决这个问题吗?我尝试在每个检查周围加上单独的括号并更改 || 到 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;
        }
4

4 回答 4

5

<> 等价于不等于。

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

事实上,它总是会输入那个 if 语句,不管数字是多少

你可以这样做:

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
于 2013-01-24T23:22:24.380 回答
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;
}
于 2013-01-24T23:29:38.027 回答
0

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

于 2013-01-24T23:24:03.463 回答
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

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

于 2013-01-24T23:29:46.397 回答