我在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";