php 简单的 rand() 查找需要很长时间/崩溃的浏览器?
php simple rand() look up taking long / crashing browser?
我是运行这个代码:
$n1 = rand(1,20);
$n2 = rand(1,20);
echo '<p>Looking for ' . $z1;
echo '<p>looking....<br><br>';
for ($i = 1; $n1 != $n2; $i ++) {
$n2 = rand(1,10);
}
echo '<p>I tried ' . $i . ' times.</p>';
页面的首次加载通常非常快。然后突然:
致命错误:超过 120 秒的最长执行时间
要么运行速度超快,要么崩溃。谁能帮我理解这是为什么?
谢谢
不确定这里是否有可接受的答案,但我的建议是添加以下行。我建议使用 while 而不是 for:
$n1 = rand(1,20);
$n2 = rand(1,20);
echo '<p>Looking for ' . $z1;
echo '<p>looking....<br><br>';
$cnt=0;
while ($n1 != $n2) {
$n2 = rand(1,10);
$cnt++;
}
echo '<p>I tried ' . $cnt . ' times.</p>';
你犯了一个“逻辑”错误。
如果 $n1 = rand(1,20);
将 $n1
设置为从 11
到 20
的任何数字,那么您的循环中的条件将永远不会满足并导致“无限循环” ".
换句话说,大约一半的代码执行会导致无限循环,而另一半则不会。
$n2 = rand(1,10);
需要 $n2 = rand(1,20);
以便可以匹配所有可能的 $n1
值。
我可以推荐:
$n = rand(1, 20);
echo "<p>Looking for $n</p>";
$i = 0;
do {
++$i;
} while($n != rand(1, 20));
echo "<p>Tries: $i </p>";
最终,无论何时使用随机生成器来确定循环的中断条件,设置任意“最大迭代次数”值都是明智的。一旦达到,让你的脚本退出循环。
我是运行这个代码:
$n1 = rand(1,20);
$n2 = rand(1,20);
echo '<p>Looking for ' . $z1;
echo '<p>looking....<br><br>';
for ($i = 1; $n1 != $n2; $i ++) {
$n2 = rand(1,10);
}
echo '<p>I tried ' . $i . ' times.</p>';
页面的首次加载通常非常快。然后突然:
致命错误:超过 120 秒的最长执行时间
要么运行速度超快,要么崩溃。谁能帮我理解这是为什么?
谢谢
不确定这里是否有可接受的答案,但我的建议是添加以下行。我建议使用 while 而不是 for:
$n1 = rand(1,20);
$n2 = rand(1,20);
echo '<p>Looking for ' . $z1;
echo '<p>looking....<br><br>';
$cnt=0;
while ($n1 != $n2) {
$n2 = rand(1,10);
$cnt++;
}
echo '<p>I tried ' . $cnt . ' times.</p>';
你犯了一个“逻辑”错误。
如果 $n1 = rand(1,20);
将 $n1
设置为从 11
到 20
的任何数字,那么您的循环中的条件将永远不会满足并导致“无限循环” ".
换句话说,大约一半的代码执行会导致无限循环,而另一半则不会。
$n2 = rand(1,10);
需要 $n2 = rand(1,20);
以便可以匹配所有可能的 $n1
值。
我可以推荐:
$n = rand(1, 20);
echo "<p>Looking for $n</p>";
$i = 0;
do {
++$i;
} while($n != rand(1, 20));
echo "<p>Tries: $i </p>";
最终,无论何时使用随机生成器来确定循环的中断条件,设置任意“最大迭代次数”值都是明智的。一旦达到,让你的脚本退出循环。