PHP如果条件没有正确评估

时间:2016-05-02 18:00:28

标签: php if-statement conditional-statements

我遇到一些PHP代码问题。基本上我有一个id值数组$challengeIDs和一个值$number,它存储此数组中的当前位置(它会影响将哪个页面加载到正文中)。我想在移动到下一个ID值之前检查我是否没有到达数组的末尾。

if (($number+1) < (count($challengeIDs)-1)) {
    $n = $number+1;
    echo "window.location = './challenge.php?n={$n}';";
} else {
    $_SESSION['n'] = 0;
    $_SESSION['playlist'] = "";
    echo "window.location = './index.php';";            
}
echo "});}</script>";

我在此代码段的上方放置了console.log()语句,该语句报告$number的值为1且count($challengeIDs)为4.但由于某种原因,页面将进行索引.php而不是转到列表中的下一页。它可能在代码的其他地方,但任何想法?感激地收到任何建议:)

编辑: 这是控制台输出。这些值将输出到此代码段之前的行,并且页面会根据值更改。它从第1页(n = 0)到第2页(n = 1)没有问题,但是失败并转到index.php转到第3页(n = 2)。

Screenshot of console

解: 结束了它的工作 - 抱歉,这根本与这段代码无关。在其他地方进行了检查,根据GET参数错误地重置了值。

1 个答案:

答案 0 :(得分:1)

这可能听起来很愚蠢,但我认为你可能使用错误的if子句 在代码中我可以看到

if (($number+1) < (count($challengeIDs)-1)) {

你写了那个

  

count($ challengeIDs)是4。

所以当页面为3(n = 2)时你的问题就出现了,因为它会转到else子句,因为

if (($number+1) < (count($challengeIDs)-1)) 

装置

if ((2+1) < (4-1)) 

和3不小于3.所以改变if子句。