除了值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的数字。
答案 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;
}
}