Я столкнулся со странной проблемой, связанной с простым условием внутри цикла foreach. Я использую инфраструктуру PhalconPHP, однако я не думаю, что она имеет отношение к проблеме.
Проблема в том, что переменная $var
не правильно оценивается в операторе if в моем цикле foreach. Однако, когда я вручную перезаписываю переменную, она работает правильно.
Я не понимаю, в чем разница между стоимостью 2 созданный выводом $ cookie-> getValue (); и 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";
Других решений пока нет …