2012-03-21 5 views
-2

EDIT: Этот код теперь работает правильно, я оставил его только на случай, если кто-то окажется в моей ситуации. Благодарю.Операторы if и if не правильно оценивают

Я столкнулся с очень странной ситуацией с моим кодом. У меня есть следующий:.

$m = 0; $star = ""; $star2 = ""; 
while($star == "") 
{ 
    //some stuff 
    if(m1 == 0) { break; }   
    $m1 -= 1; 
} 

По какой-то сумасшедшей причине, когда я отладки этого кода он запускает цикл пока только один раз (даже если $star по-прежнему равен "", а затем достигает if и разрывы I попробовали разные подходы к чему не привели. кто-нибудь знает, почему это происходит?

+1

Возможно, это должно быть 'if ($ m1 == ...' (обратите внимание на $). – aioobe

+0

Что такое '$ m1'? Где используется' $ m'? Где используется '$ star2'? У вас нет знака доллара в 'if (m1 == 0)'. Пожалуйста, разместите свой фактический код. –

+0

Какое условие вы проверяете с помощью '==" "' –

ответ

1

Там нет $ до того m1, поэтому PHP будет предположим, что это буквальная строка «m1» и выбросить ошибку уведомления. «m1» сравнивается с 0, что верно, и ваш цикл прерывается.

Вы также не инициализировали $ m1 в своем примере, поэтому, даже если вы использовали $ m1, он все равно сломается.

Убедитесь, что у вас есть все ошибки PHP и предупреждения, они очень полезны для таких вещей!

+0

Я не включил часть кода, который присваивает до m1. Но сумасшедшая проблема была с сумасшедшим долларом! –

+0

Я сделал исправление, но 'break' все еще не работает? –

+0

доллар - t3h священная буква в php –

1

я думаю, ты опечатка в этой строке

$star2 = "" 
+0

Был действительно. Спасибо –

+0

@ChibuezeOpata, потому что вы отредактировали эту опечатку в своем вопросе/коде, этот правильный совет больше не относится к вопрос. Я хотел бы попросить вас вернуть эту опечатку к вопросу, чтобы ответ NarayaN имел смысл/имел значение. – mickmackusa

0

m1 рассматривается как голая строка, так как нет постоянной с этим именем. Затем он преобразуется в целое число, давая 0, что, конечно, равно 0. Таким образом, ваша петля выходит на первую итерацию.

Возможно, вы забыли $ перед этим m1?

Смежные вопросы