2011-01-09 20 views
0

私に悩まされているこのコードを手に入れました。PHPが4回繰り返すと4回繰り返す

$x=0; 
while($row = mysql_fetch_array($result)) 
{ 
    if ($me == $x) 
    { 
    echo "You are $me"; 
    break; 
    } 
    else 
    { 
    $x++; 
    } 
} 

ブレークを含めると、それが返されます:私は休憩を削除すると

あなたが、しかし1

選択しました。それはあなたがあなたがあなたが現在データベースで6枚のレコードとコードは、それを仕事にしている場合があります1

を選択した1を選択した1を選択した1を選択した

を返します。 "あなたは4番目です"と表示されます

アイデア?

答えて

3

$x++;elseでのみ実行されます。

$x=0; 
while($row = mysql_fetch_array($result)) 
{ 
    if ($me == $x) 
    { 
    echo "You are $me"; 
    break; 
    } 

    $x++; 
} 

ただ、サイドノート:それは上のすべての反復をインクリメント持つために、あなたはelseを削除する必要が$rowがここ$me$xに関連していないようです。あなたのループには省略した他のコードがいくつか含まれていると仮定しますが、これだけであなたの質問に答えるでしょう。

+1

また、X ++ '$削除;それは内部'完全声明、およびポストインクリメントを条件( 'if($ me == $ x ++)')です。これは、 '$ me == $ x'を' $ x'をインクリメントする前に比較し、それを行うもっと進んだ方法です。 – BoltClock

+0

私は通常あなたに同意します。しかし、この問題の相対的な単純さを考えると、私は質問者が、より高度な技法をマスターできるようになると、当面は単純な構造をとっていることを示唆しています。 – diagonalbatman

+0

@Andy Paton:誰かがそれを言うつもりだったので、代わりにコメントに入れました:) – BoltClock

0

あなたはelseで$ xをicrementingしていますが、これは決して実行されません。

エコーと同じ部分で増分を行う必要があります。

だから、次のいずれか

$x=0; 
while($row = mysql_fetch_array($result)) 
{ 
    if ($me == $x) 
    { 
    echo "You are $me"; 
    $x++; 

    } 
    else 
    { 
    $x++; 
    } 
} 

それとも、エコーなし$ xをインクリメントする必要はありません場合:

$x=0; 
while($row = mysql_fetch_array($result)) 
{ 
    if ($me == $x) 
    { 
    echo "You are $me"; 
    x++; 
    } 
} 
関連する問題