0

これは非常に単純なことですが、何かを見落としているように感じます。画面に表示したいのは


RED This is 0.

また

GREEN This is 1.

そして、表示されたテキストを交互に切り替えます。私のロジックは、赤と緑を交互に切り替えることは問題ありませんが、「This is 0」と「This is 1」のテキストは表示されません。

これまでの私のコードは次のとおりです。

<?php

$array = array(0=>"RED",1=>"GREEN");
$a_count = 0;
$count = 0;


while($count<10)
// DO 9 TIMES
{

    echo $array[$a_count] . ' ';
    //SUDO FOR IMAGE BEING DISPLAYED

    while($array[$a_count] == 0)
    {
        echo "This is 0.<br>";
    }

    while($array[$a_count] == 1)
    {
        echo "This is 1<br>";
    }


//<----SWITCH BACK AND FORTH---->
    if($a_count == 1)
    {
        $a_count = 0;
    }
    else
    {
        $a_count++;
    }
//<----------------------------->
    $count++;
}

?>

私が欲しいものを手に入れる最も簡単な方法は次のとおりです。

<?php

$array = array(0=>"RED",1=>"GREEN");
$a_count = 0;
$count = 0;


while($count<10)
// DO 9 TIMES
{

    echo $array[$a_count] . ' ';
    //SUDO FOR IMAGE BEING DISPLAYED


//<----SWITCH BACK AND FORTH---->
    if($a_count == 1)
    {
        echo "This is 1<br>";
        $a_count = 0;
    }
    else
    {
        echo "This is 0.<br>";
        $a_count++;
    }
//<----------------------------->
    $count++;
}

?>

しかし、このコードには、このプロジェクトの継続に必要なロジックが含まれていません。最初のコードで「This is 0」と表示されない理由について、回答をいただければ幸いです。

ありがとうございました!

4

6 に答える 6

3

あなたが探しているのは mod 数です。

ループを次のように変更します。

for($i=0;$i<10;$i++){
    echo $array[$i%2].' This is '.($i%2);
}

モジュロ演算子は、除算の余りを返します。参照:プログラミングにおけるモジュラス (%) の実用的な用途は何ですか?

于 2013-07-31T16:51:10.180 に答える
1

なぜこのようなものではありません:

$colors = array(0 => 'Red', 1 => 'Green');
$idx = 0;
$count = 0;
while($count < 10) {
    echo "The color is {$colors['$idx']}<br />";
    $count = 1 - $count; // if $count is 1, it becomes 0. if it's 0, it becomes 1
}

while() ループは基本的にまったく役に立ちません。RED と GREEN の文字列を再び 0 で比較しようとしています。いずれかの評価が true になると、無限ループに陥ります。

于 2013-07-31T16:48:00.460 に答える
0

while($count<10) の前の最初の例では、値を初期化しましたか? その場合、次のような表示が必要です。

RED This is 0.0
This is 0.0
This is 0.0
This is 0.0
This is 0.0
...

「This is 0.0」が無限ループで表示されます。

    while($array[$a_count] == 0)
    {
        echo "This is 0.$count<br>";
    }

    while($array[$a_count] == 1)
    {
        echo "This is 1<br>";
    }

while ループで値を変更する必要があります。

その他のヒントとして、「foreach」php ループを調べてください。やりたいことに役立つかもしれません。modulos も役立ちます。

于 2013-07-31T17:00:30.270 に答える
0

$a_countwhile ループの値を変更していないため、終了する方法はありません。

問題はここにあります:

while($array[$a_count] == 0)
{
    echo "This is 0.<br>";
}

while($array[$a_count] == 1)
{
    echo "This is 1<br>";
}

最初のループに入ると、そのままエコーし続け"This is 0.<br>"ます$a_count

これらwhileの s をifs に変更して、コードを希望どおりに機能させることができるようです。$a_countおそらく、それが 0 または 1 であることを確認したいでしょう。$array[$a_count]

于 2013-07-31T16:48:04.360 に答える
0

おそらくこれを行う最も簡単な方法は、switch ステートメントを使用することだと思います。前に考えなかったのは本当にばかげていると感じます。

while($count<10)
{

    echo $array[$a_count] . ' ';
    //PSUEDO FOR IMAGE BEING DISPLAYED

    switch($a_count):
    {
        case 1:
            echo "This is RED.<br>";
            $a_count = 0;
            break;

        case 0:
            echo "This is GREEN.<br>";
            $a_count++;
            break;

    }

    $count++;
}
于 2013-08-01T14:56:49.643 に答える
0

このスクリプトの非効率性を無視すると、while ループは配列のキーではなく値と比較されます。しかし、この問題を修正すると、実際には別の無限ループが明らかになります。

于 2013-07-31T16:52:05.260 に答える