只有一行在假IF中执行 - PHP

时间:2014-10-18 11:12:43

标签: php variables session

我正在将分页集成到wordpress块,应该发生的是每当我点击“旧帖子”按钮时,帖子偏移量会在另一个php文件中增加(块文件和增量文件是单独的文件)。

每当我点击较旧的帖子时,会发生一些不应该发生的魔法:

问题在于其中一个if语句,会发生什么是IF语句的计算结果为false,但是我在代码中标记的那一行仍然被执行(echo不执行但是$_SESSION["inf"] = 0;一样)。

这是代码。

if(isset($_POST["paginate_btn"])){
    if(isset($_SESSION["inf"])){
        echo "PREVIOUS:".(string)($_SESSION["inf"]);
        $_SESSION["inf"] = $_SESSION["inf"] + 5;
        echo "<br/> incremented by 5, RESULT:".(string)($_SESSION["inf"]);
    }
    else{
        echo "<br/> isset session inf failed, set to 5";
        $_SESSION["inf"] = 5;
    }
}
else if(isset($a) and ($a != $url)){
        echo "<br/>dif page";
        if(isset($_SESSION["inf"])){
            echo "<br/> unset";
            $_SESSION["inf"] = 0; <----- THIS LINE HERE!
        }
        else{
            echo "<br/>session inf not set and button not pressed";
        }
}
else{
    echo "<br/> button not pressed, a is not set and is same page";
    $_SESSION["inf"] = 0;
}

我已经乱搞了几个小时,我不明白这是怎么回事。

var_dump((isset($a) and ($a != $url)));评估false,但仍然只有那一行代码被执行,回声没有,甚至在它之前的差异页面回声....

有趣的是,如果我注释掉一行,这不再发生,我甚至尝试将它设置为不同的变量,所以它肯定会以某种方式单独运行。

if语句之后的var_dump代码。

echo "<br/>--1---<br/>";
var_dump((isset($a) and ($a != $url)));
echo "<br/>--2---<br/>";
var_dump((isset($_SESSION["inf"])));
echo "<br/>---<br/>";
echo $_SESSION["inf"];
echo "<br/>---<br/><br/>";

1 个答案:

答案 0 :(得分:0)

代码的另一部分将$_SESSION["inf"]设置为0

如果您没有看到echo,则不会执行。