2012-03-21 13 views
-2

EDIT:このコードは正しく動作します。私の状況で誰かが自分自身を見つけた場合に備えて、このコードは残しました。ありがとう。while文とif文が正しく評価されていない

私のコードでは非常に奇妙な状況に直面しています。私は、次のいます。

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

をいくつかのクレイジーな理由、私はこのコードをデバッグしていたときに、それは$starはまだ""に等しいにも関わらず(一度だけwhileループを実行し、その後ifや休憩に達するために I無駄に異なるアプローチを試してみました。誰もがなぜこれが起こっている知っていますか?

+1

'$ m1 == ...'($に注意してください) – aioobe

+0

'$ m1'とは' $ m'はどこで使われますか? '$ star2'はどこで使われますか? –

+0

'==" "' –

答えて

1

のタイプミスだと思いますそれがリテラル文字列 'm1'であると仮定し、通知エラーをスローします。 'm1'は0と比較され、これは真であり、ループは壊れます。

あなたの例では$ m1を初期化していないので、$ m1を使用したとしてもまだ破損しています。

すべてのPHPエラーと警告がオンになっていることを確認してください。これは、このような場合に非常に役立ちます!

+0

私は割り当てたコードの部分を含んでいなかった〜m1。しかし、狂った問題は夢中だった! –

+0

私は修正を行いましたが、「休憩」はまだ動作していませんか? –

+0

ドルは、PHPの神聖な文字はt3hです –

1

をPHPがするので、私は、あなたがこのラインM1前には$はありません

$star2 = "" 
+0

ありがとう –

+0

@ChibuezeOpataあなたの質問/コードでこのタイプミスを編集したので、この正しいアドバイスはもはや質問NarayaNの答えが意味をなす/価値があるように、このタイプミスを質問に戻すように依頼したい。 – mickmackusa

0

m1は、その名前の定数がないため、裸の文字列として扱われています。その後、それは整数に変換され、0に等しくなります。これはもちろん0に等しくなります。したがって、ループは最初の反復で終了します。

おそらく、の前に$を忘れていましたか?

関連する問題