如果语句没有在简单的foreach循环中正确评估

时间:2014-09-28 23:22:50

标签: php phalcon

我遇到了一个与foreach循环中的简单条件匹配的奇怪问题。我正在使用PhalconPHP框架,但我不认为它与问题有关。

问题是我的foreach循环中的if语句中没有正确计算变量$var。但是,当我手动覆盖变量时,它确实可以正常工作。

我不明白$ cookie-> getValue()的输出所创建的值 2 之间的差异是什么。和我手动定义的 2

    var_dump($var) // Outputs NULL

    if($cookie) {
        $var = $cookie->getValue();
    }

    var_dump($var) // Outputs string(32) "2"

    foreach($array as $row) {
        var_dump($var) // Outputs string(32) "2" string(32) "2" string(32) "2"
        var_dump($row['thing']); // Outputs string(1) "1" string(1) "2" string(1) "3"

        if($var == $row['thing']) { // Never evaluates as true
            echo 'hello world'; // Nothing
            $var2 = 'hello world';
        }
    }

    var_dump($var2); // Outputs NULL

但是,如果我手动覆盖变量,在foreach循环之前,它会正确评估。

    var_dump($var); // Outputs NULL

    if($cookie) {
        $var = $cookie->getValue();
    }

    var_dump($var); // Outputs string(32) "2"

    //OVERWRITE VAR
    $var = 2;

    foreach($array as $row) {
        var_dump($var); // Outputs int(2) int(2) int(2)
        var_dump($row['thing']); // Outputs string(1) "1" string(1) "2" string(1) "3"

        if($var == $row['thing']) { // Evaluates Correctly
            echo 'hello world'; // Outputs "hello world"
            $var2 = 'hello world';
        }
    }

    var_dump($var2); // Outputs string(11)"hello world"

有关我的错误或如何进一步调试此问题的任何提示?

1 个答案:

答案 0 :(得分:1)

是的用户var_dump,它总是你的错,不要以为你找到了PHP bug(我总是这么做) 在你的foreach陈述之前

var_dump($var , $row['thing']);
echo "====\n";