我主要是一个CSS和HTML人,但我最近冒险进入PHP。
我看不出为什么这个脚本会挂起:
$loop_Until = 10;
while($i < $loop_Until)
{
// do some code here
$loop_Until = $loop_Until + 1;
}
有人可以帮忙吗?
答案 0 :(得分:18)
固定代码
$loop_Until = 10;
$i = 0;
while($i < $loop_Until)
{
// do some code here
$i = $i + 1;
}
您的代码说明:
// A variable called loop until is set to 10
$loop_Until = 10;
// While the variable i is less than 10
// NOTE: i is not set in code snippet, so we have no way of knowing what value it is, if it is greater than 10 it might be infinite
while($i < $loop_Until)
{
// Increment the 10 value up 1 every time, i never changes!
$loop_Until = $loop_Until + 1;
}
答案 1 :(得分:11)
这会导致ifinate循环,你会想看看php for
循环。 http://php.net/manual/en/control-structures.for.php
for($i= 1; $i< $loop_Until; ++$i) {
// do some code here
}
您每次都在增加$loop_Until
,永远不会增加$i
,因此$i
始终会小于$loop_Until
答案 2 :(得分:1)
最简单的解决方案:将“+”替换为“ - ”。这将导致循环结束。像这样:
$loop_Until = 10;
while($i < $loop_Until)
{
// do some code here
$loop_Until = $loop_Until - 1;
}
让我解释一下,提供一个稍好的解决方案,并给你一些选择。
如果我们假设$ i的开头小于$ loop_Until,那么在$ loop_Until中添加1并使用行$loop_Until = $loop_Until + 1;
将永远不会使$ i等于或大于$ loop_Until。
您应该从$ loop_Until中减去,或者添加到$ i。
通过执行--$variable
可以快速完成从变量中减去1。
通过执行++$variable
可以快速完成向变量添加1,因此您应该:
$loop_Until = 10;
while($i < $loop_Until)
{
// do some code here
--$loop_Until;
}
当然$ loop_Until听起来像你可能想要设置一次,然后让它保持不变。在这种情况下,你可以设置$ i并增加它。所以首先将$ i设置为你想要的任何东西(小于$ loop_Until,如果你想让你的while循环运行至少一次),那么:
$loop_Until = 10;
while($i < $loop_Until)
{
// do some code here
++$i;
}
顺便提一下,++$i is faster than $i++
正如Lizard所说,for循环非常适合这样做。上面两段代码的两个等效for循环是
for($loop_Until = 10; $i < $loop_Until; --$loop_Until)
{
// do some code here
}
和
for($loop_Until = 10; $i < $loop_Until; ++i)
{
// do some code here
}
请确保检查您的情况最终会在一张纸上或头脑中出现几个数字。
最后,您选择哪些解决方案取决于您是希望$ i还是$ loop_Until保持不变。
如果你有多个循环,并且你想要完成所有这些循环,那么将$ loop_Until保持不变是一个好主意,并在每个循环开始时重置$ i。
答案 3 :(得分:0)
while( 0 != ($loop_until--) );