следующий оператор возвращает "do actions! What2" при запуске. Что тут происходит? похоже, что и true и false возвращаются!
if (md5($email) == $emailHash) { echo "do actions!"; } else { echo "what2"; }
Двойной вызов функции, где отображаются как истинное, так и ложное условие? Вы можете создать трассировку стека с помощью функции debug_print_backtrace и посмотреть, вызывается ли она более одного раза.
нет шансов - вы вызываете код дважды!
Я не знаю, что именно там происходит, но я привык делать что-то подобное для той же проблемы:
$userHash = md5($email); if ($userHash == $emailHash) { // etc... }
Следовательно, выполняя одно действие за оператор за раз, облегчая отладку.
Я думаю, окружающий код работает неправильно. В этом нет ничего плохого. Также попробуйте ввести в вашем условии if три знака равенства === вместо двух.
Если код находится в цикле for или while (или вызывается дважды, например, в функции), то может случиться так, что if оценивает значение true в первый раз и значение false во второй время. Иначе я не вижу причин, по которым это могло бы произойти.
for
while
if
Это действительный код, в котором возникает эта проблема? Потому что как сейчас, так не может быть. Если это не ваш настоящий код, проверьте, есть ли у вас точка с запятой после условного выражения, но перед первым блоком.
Этого не может быть. Чаще мы думаем, что в языке есть ошибка, когда мы уверены, что мы не сделали ничего плохого. Но в коде всегда есть что-то глупое. Вы должны проверить код еще раз.
Я думаю, что нам нужно больше кода, чем просто ваше условие if. На моем ящике я получил « what2 », что правильно.
if (md5($email) === $emailHash) { echo "do actions!"; } else { echo "what2"; }