PHP:循环逻辑

时间:2013-07-31 16:44:23

标签: php loops if-statement while-loop logic

我意识到这非常简单,但我觉得我看起来过分了。 我要屏幕显示的是


RED This is 0.

GREEN This is 1.

并使其在显示的文本之间来回切换。我的逻辑如果在红色和绿色之间交替正常,但“这是0 ”和“这是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++;
}

?>

但是这段代码不包含我继续这个项目所需的逻辑。 我非常感谢为什么我的第一个代码不打印“这是0”。

谢谢!

6 个答案:

答案 0 :(得分:3)

你要找的是一个mod计数。

更改你的循环:

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

模运算符返回除法的余数。 请参阅:What are the practical uses of modulus (%) in programming?

答案 1 :(得分: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.如果任何一个评估都是真的,你最终会得到一个无限循环。

答案 2 :(得分:0)

您没有更改while循环中$a_count的值,因此无法结束。

问题在于:

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更改为if,以使您的代码按您希望的方式运行。您可能还想检查$a_count是0还是1,而不是$array[$a_count]

答案 3 :(得分:0)

忽略此脚本的低效率,您的while循环正在与数组的值进行比较,而不是其键。但修复这个问题实际上会暴露另一个问题 - 一个无限循环。

答案 4 :(得分:0)

那么,在你之前的第一个例子中($ count&lt; 10),你有没有启动你的价值观? 如果你这样做,你必须有这样的显示:

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

&#34;这是0.0&#34;以无限循环显示。

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

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

您必须在while循环中更改值。

其他提示,我认为你可以看看&#34; foreach&#34; php循环。对你想做的事情有用。模数也可以帮助你。

答案 5 :(得分: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++;
}