11

while ループに複数の条件を記述できますか? そうでない場合、代替手段は何ですか?試してみたところ、while ループの条件を設定するコード行に関連するエラーが返されました。これが私の言いたいことの例です。

$s = 1;

while ($result_row = mysql_fetch_assoc($query) && $s < 5)
{
echo $result_row['id'];
$s++;
}
4

4 に答える 4

31

それは可能ですが、ステートメントが正しく解釈されるようにするために必要な括弧よりも優先順位=が低いためです。&&

while (($result_row = mysql_fetch_assoc($query)) && ($s < 5))

ここでは括弧$s < 5は必要ありませんが、わかりやすくするために括弧を含めました。

ただし、を追加することで、クエリを変更して5行のみを返すようにする方が簡単ですLIMIT 5

SELECT ...
FROM yourtable
ORDER BY ...
LIMIT 5
于 2012-08-15T21:02:29.993 に答える
1

あなたは試すことができます:

$s=1
while ($result_row = mysql_fetch_assoc($query))
{
    echo $result_row['id'];
    $s++;
    if($s>5){
        break;
    }
}

http://php.net/manual/en/control-structures.break.php

于 2012-08-15T21:03:21.217 に答える
0

私はその中に何も悪いことは見ていませんが。逆に、このようなことをすることもできます。

$s = 1;
while ($result_row = mysql_fetch_assoc($query))
{
    if($s < 5) {
        //enter the condition
    }
    $s++;
}
于 2012-08-15T21:04:34.353 に答える
0

の値は、おそらく真っぽいものを返す$result_rowかどうかのブール条件に設定されており、5 未満です。したがって、辞書として読み取ろうとしても機能しなくなります。mysql_fetch_assoc($query)$s$result_row

括弧を使用して、物事がどのように解析されるかを正確に指定できます。

while (($result_row = mysql_fetch_assoc($query)) && ($s < 5))

このようにして、あなたが望むものである$result_rowに設定され、その代入の論理値が真っぽい何かを返し、5未満である限り、ループが続きますmysql_fetch_assoc($query)s

于 2012-08-15T21:08:01.640 に答える