我遇到了一个与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"
有关我的错误或如何进一步调试此问题的任何提示?
答案 0 :(得分:1)
是的用户var_dump,它总是你的错,不要以为你找到了PHP bug(我总是这么做) 在你的foreach陈述之前
var_dump($var , $row['thing']);
echo "====\n";