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


If statement doesn't properly evaluate in simple foreach loop

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

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

我不明白$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"

关于我做错了什么,或者如何最好地进一步调试,有什么建议吗?

是的,用户var_dump,这总是你的错,不要认为你发现了PHP错误(我总是这样)在你的foreach语句放入之前

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