Оператор if, возвращающий в PHP как true, так и false - PullRequest
1 голос
/ 06 февраля 2010

следующий оператор возвращает "do actions! What2" при запуске. Что тут происходит? похоже, что и true и false возвращаются!

if (md5($email) == $emailHash) {
    echo "do actions!";
} else {
    echo "what2";
}

Ответы [ 8 ]

4 голосов
/ 06 февраля 2010

Двойной вызов функции, где отображаются как истинное, так и ложное условие? Вы можете создать трассировку стека с помощью функции debug_print_backtrace и посмотреть, вызывается ли она более одного раза.

2 голосов
/ 06 февраля 2010

нет шансов - вы вызываете код дважды!

1 голос
/ 06 февраля 2010

Я не знаю, что именно там происходит, но я привык делать что-то подобное для той же проблемы:

$userHash = md5($email);
if ($userHash == $emailHash) {
  // etc...
}

Следовательно, выполняя одно действие за оператор за раз, облегчая отладку.

1 голос
/ 06 февраля 2010

Я думаю, окружающий код работает неправильно. В этом нет ничего плохого. Также попробуйте ввести в вашем условии if три знака равенства === вместо двух.

1 голос
/ 06 февраля 2010

Если код находится в цикле for или while (или вызывается дважды, например, в функции), то может случиться так, что if оценивает значение true в первый раз и значение false во второй время. Иначе я не вижу причин, по которым это могло бы произойти.

1 голос
/ 06 февраля 2010

Это действительный код, в котором возникает эта проблема? Потому что как сейчас, так не может быть. Если это не ваш настоящий код, проверьте, есть ли у вас точка с запятой после условного выражения, но перед первым блоком.

0 голосов
/ 06 февраля 2010

Этого не может быть. Чаще мы думаем, что в языке есть ошибка, когда мы уверены, что мы не сделали ничего плохого. Но в коде всегда есть что-то глупое. Вы должны проверить код еще раз.

0 голосов
/ 06 февраля 2010

Я думаю, что нам нужно больше кода, чем просто ваше условие if. На моем ящике я получил « what2 », что правильно.

if (md5($email) === $emailHash) 
{
    echo "do actions!";
}
else 
{
    echo "what2";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...