为什么我的PHP循环不工作?或者我必须添加';如果';? 假设我开着一辆汽车在环线上行驶。在循环中,有一个 门。每次我想开车进门,我都要花点时间 一些钱 原来我的钱是十万 当我的钱超过50000元时,我会把其中的5%花在购物上 入场费 当我的钱等于或少于50000元时,我就花5000元作为通行费 我想知道我有多少次可以通过这扇门 第一个while循环有效。但是第二个while循环不起作用。你能告诉我为什么吗 $money=100000;//我原来的钱 $a=0;//$a定义了我可以花多少次钱 //当我的钱超过50000元时,我会花其中的5%作为通行费。 而($money>50000){ $money=$money*0.95;//每次消费后剩下的钱 $a++;//我能花多少次钱。 } 回声$a.“”//$到目前为止,我已经走过这扇门14次了。 回音$money.“”//$到目前为止我还剩下48767.497911553美元。
我的问题是为什么以下代码不起作用为什么我的PHP循环不工作?或者我必须添加';如果';? 假设我开着一辆汽车在环线上行驶。在循环中,有一个 门。每次我想开车进门,我都要花点时间 一些钱 原来我的钱是十万 当我的钱超过50000元时,我会把其中的5%花在购物上 入场费 当我的钱等于或少于50000元时,我就花5000元作为通行费 我想知道我有多少次可以通过这扇门 第一个while循环有效。但是第二个while循环不起作用。你能告诉我为什么吗 $money=100000;//我原来的钱 $a=0;//$a定义了我可以花多少次钱 //当我的钱超过50000元时,我会花其中的5%作为通行费。 而($money>50000){ $money=$money*0.95;//每次消费后剩下的钱 $a++;//我能花多少次钱。 } 回声$a.“”//$到目前为止,我已经走过这扇门14次了。 回音$money.“”//$到目前为止我还剩下48767.497911553美元。,php,loops,Php,Loops,我的问题是为什么以下代码不起作用 //当我的钱等于或少于50000时,我会花5000作为通行费。 当($money当($money当($money当($money当($money当($money在你的第二个循环中,只要你的钱少于50000,你就会通过,因为你只会减少你的钱的数量,你会永远呆在那里,我想一旦你达到0美元或更少,你就会停止它,所以你可以这样做: while($money >= 0 && $money<=50000) 当($money>=0&&$money
//当我的钱等于或少于50000时,我会花5000作为通行费。
当($money当($money当($money当($money当($money当($money在你的第二个循环中,只要你的钱少于50000,你就会通过,因为你只会减少你的钱的数量,你会永远呆在那里,我想一旦你达到0美元或更少,你就会停止它,所以你可以这样做:
while($money >= 0 && $money<=50000)
当($money>=0&&$money在你的第二个循环中,只要你的钱少于50000,你就会通过,因为你只会减少你的钱数,你将永远留在那里,我想一旦你达到0$或更少,你就想停止它,所以你可以这样做:
while($money >= 0 && $money<=50000)
当($money>=0&&$money时,问题是您的第二个循环条件:
while($money<=50000)
while($money问题在于您的第二个循环条件:
while($money<=50000)
while($money首先我检查我还有钱:
$money = 100000; //the original money I have
$a= 0 ; // $a defines how many times I can spend the money
$b = 0; //defines how many turns I have done;
while($money>0){
if($money>50000){ //First option - i loose 5% of my money
$money = $money * 0.95;
$b = $b+1;
}else{ //I already know that I have money
if($money>5000){ //I can do another turn
$money = $money - 5000;
$b = $b + 1;
}else{ //I have less then the money I need to do another turn
echo "You made $b turns and now you have only $money left";
$money = 0; //I reset the money so I get out of the while loop
exit(); //i go out of the loop since I have nothing more to spend
}
}
}
根据这些数字,该代码的结果将为:
你转了23圈,现在只剩下3767.497911553了
我不知道您是否还想模拟一次转弯时还剩多少次。这将导致程序的不同设置。首先我检查我是否还有钱:
$money = 100000; //the original money I have
$a= 0 ; // $a defines how many times I can spend the money
$b = 0; //defines how many turns I have done;
while($money>0){
if($money>50000){ //First option - i loose 5% of my money
$money = $money * 0.95;
$b = $b+1;
}else{ //I already know that I have money
if($money>5000){ //I can do another turn
$money = $money - 5000;
$b = $b + 1;
}else{ //I have less then the money I need to do another turn
echo "You made $b turns and now you have only $money left";
$money = 0; //I reset the money so I get out of the while loop
exit(); //i go out of the loop since I have nothing more to spend
}
}
}
根据这些数字,该代码的结果将为:
你转了23圈,现在只剩下3767.497911553了
我不知道你是否还想模拟你在一个回合中还剩多少次。这会导致程序的不同设置。我们完全误解了,第二个循环紧跟在第二个循环之后,它不会替换它。$money=48767.497911553
当进入第二个循环时,它准确地进入,并停留在那里。它永远不会离开。因为你只是在减小值。所以条件总是满足的。你处于一个无限循环中。我们完全误解了,第二个循环紧跟在第二个循环之后,它不会取代它。$money=48767.497911553
当进入第二个循环时,它进入并停留在那里。它永远不会离开。因为你是只有减小值。所以条件总是满足的。你在一个无限循环中。$money=48767.497911553
当进入第二个循环时我知道,但这将是一个无限循环,因为只要$money@DarkBee哦,好吧,我只是对被否决感到困惑:)我被OP中说“第一个循环有效,第二个循环无效”的部分弄糊涂了,但很明显,对于infin循环,页面应该抛出一个错误(很可能执行超时)$money=48767.497911553
当进入第二个循环时我知道,但这将是一个无限循环,因为只要$money@DarkBee噢,好吧,我只是对被否决感到困惑:)OP中说“第一个循环有效,第二个循环无效”的部分让我感到困惑,但很明显,对于infin循环,页面应该会抛出一个错误(很可能是执行超时)。嗨,Lelio,谢谢你的回答。:)信息非常丰富。但我感到困惑。我将第二个while循环的开头从“while”改为“while”($money你是对的。我在检查剩余的钱之前减少了钱。顺便说一句,减少循环次数总是更有效。使用这种逻辑,你只需运行一次,就可以得到你想要的所有结果谢谢。我看到了变化。我可以问一下$a在你的代码中的用途吗?我只看到一次,然后它就消失了?你知道吗将a定义为您可以完成的左转次数。您的代码没有对其进行任何计算。正如我在前面的评论中所说,我使用b表示已完成的转弯。如果您想编写类似于“您完成了3个转弯。您还剩20个”的内容,则需要使用a并更改代码a bitHi Lelio,谢谢您的回答。:)非常有用。但是我很困惑。我将第二个while循环的开头从“while”改为“while”($money你是对的。我在检查剩余的钱之前减少了钱。顺便说一句,减少循环次数总是更有效。使用这种逻辑,你只需运行一次,就可以得到你想要的所有结果谢谢。我看到了变化。我可以问一下$a在你的代码中的用途吗?我只看到一次,然后它就消失了?你知道吗将a定义为您可以完成的左转次数。您的代码没有对其进行任何计算。正如我在前面的评论中所说,我使用b表示完成的转弯。如果您想编写类似于“您完成了3个转弯。您还剩20个”的内容,则需要使用a并稍微更改代码