do-while / while中的赋值不能按预期工作

时间:2016-02-28 12:47:13

标签: php while-loop do-while

除了值79之外,我想将一个介于48和122之间的随机值分配给$num

所以为了解决这个问题,我尝试了一个do-while和while循环来解决这个问题。我测试了它,但它没有按预期工作,它以无限循环结束。

while($num != 79){
    $num =  rand(48, 122);
};

或:

do {
    $num = rand(48, 122);
} while ($num != 79);

那么为什么这不能像我想要的那样工作呢?谁能告诉我我的错误在哪里?

$ num shout是48到122之间但不是79的数字。

3 个答案:

答案 0 :(得分:6)

在这两种情况下逻辑都是错误的,当你的数字 79

时你重复循环

如果数字 79:

,则应重复循环
$num = 79;// assign value to avoid Notice error 
while($num == 79){ 
    $num =  rand(48, 122);
};

或:

do {
    $num = rand(48, 122);
} while ($num == 79);

答案 1 :(得分:4)

使用值79声明$num以确保循环开始 当$num!=79

时,循环将退出
$num = 79; // to make sure the loop will iterate at least once
while( $num==79 ){ 
    $num =  rand(48, 122);
}

根据您的要求,也不包括111,修改条件如下:

while( $num==79 || $num==111)

do-while将使用相同的条件,并且不需要将79指定为初始值,因为do-while将至少运行一次。

$num = 0; //just to declare the variable
do {
    $num = rand(48, 122);
} while ($num == 79); // you can use || here too: while ($num == 79 || $num == 111)

答案 2 :(得分:-2)

试试这段代码

$num = 0;
while(true){
   $num = rand(48,122);
   if( $num != 79){
      break;
   }
}