PHP while循环执行时间
我正在努力与以下代码,无法找到一个可以解决它。页面加载时间过长,出现“致命错误:超过最大执行时间30秒”错误 也许有人能解释一下或者给点建议PHP while循环执行时间,php,foreach,while-loop,Php,Foreach,While Loop,我正在努力与以下代码,无法找到一个可以解决它。页面加载时间过长,出现“致命错误:超过最大执行时间30秒”错误 也许有人能解释一下或者给点建议 <?php $i = 1; $s = 1; $limit = 21; $seasons = 6; while ($s < $seasons) { if ($s < 10) { $s = '0' . $s; } while
<?php
$i = 1;
$s = 1;
$limit = 21;
$seasons = 6;
while ($s < $seasons) {
if ($s < 10) {
$s = '0' . $s;
}
while ($i < $limit) {
if ($i < 10) {
$i = '0' . $i;
}
echo '<input type="checkbox" value="S' . $s . 'E' . $i . '" name="rate"/>S' . $s . 'E' . $i . '<br/>';
++$i;
}
}
?>
多谢各位
更新:
在添加$s++;在第一个循环结束时,代码解决了错误和长负载问题,但它只运行一次,不考虑$seasons=6条件。你知道为什么会这样吗?我试图删除0前缀,但它直到6才循环
更新:
问题解决了,第二个循环被放入函数中,它工作了。谢谢大家
最终版本
<?php
$s = 1;
$limit = 21;
$seasons = 7;
while ($s < $seasons) {
if ($s < 10) {
$s = '0' . $s;
}
episodes($s,$limit);
$s++;
}
function episodes($s,$limit){
$i = 1;
while ($i < $limit) {
if ($i < 10) {
$i = '0' . $i;
}
echo '<input type="checkbox" value="S' . $s . 'E' . $i . '" name="rate"/>S' . $s . 'E' . $i . '<br/>';
++$i;
}
}
?>
这只需在$s
之前添加前缀0
,$s
将是'01'
,'001'
,'0001'
。。。等等
然后与整数6
比较,$s
将转换为1
因此,$s
将永远不会超过$seasures
,它将导致无限循环
与$i
相同,无限循环实际上位于嵌套的while循环中。(++$i;
)
如果确实希望字符串前缀为0
,则应检查字符串长度
例如:
if (strlen($s) < 10) {
if(strlen($s)<10){
您缺少$s++,请运行以下代码:
$i = 1;
$s = 1;
$limit = 21;
$seasons = 6;
while ($s < $seasons) {
if ($s < 10) {
$s = '0' . $s;
}
while ($i < $limit) {
if ($i < 10) {
$i = '0' . $i;
}
echo '<input type="checkbox" value="S' . $s . 'E' . $i . '" name="rate"/>S' . $s . 'E' . $i . '<br/>';
++$i;
}
$s++;
}
$i=1;
$s=1;
$limit=21;
$seasures=6;
而($s<$seasures){
如果($s<10){
$s='0'。$s;
}
而($i<$limit){
如果($i<10){
$i='0'。$i;
}
echo'S'.$S.'E'.$i.
;
++$i;
}
$s++;
}
首先,请确保在执行比较时将整数与整数进行比较。如果出于显示目的需要,可以在数字之前添加“0”,但在生成显示值的部分中,而不是在$s
变量本身中执行此操作:
$s_formatted = str_pad($s, 2, '0', STR_PAD_LEFT);
echo '<input type="checkbox" value="S' . $s_formatted . 'E' . $i . '" name="rate"/>S' . $s . 'E' . $i . '<br/>';
++$i;
你不会在任何地方增加
$s
,所以它总是小于$s
(无止境循环)。您在开始处添加了一个零,但这不会影响循环…这个零应该在结尾吗?@scrowler谢谢。增加S解决了长加载页问题,没有出现错误,但第一个循环只运行一次,为什么它不会运行5次,因为$seasons=6您如何知道他想要将$S
增加1每一次?你纯粹是假设-它可能是10,在开始时被绑定到if语句中…它可能是任何东西。@scrowler,如果他想增加一次以上,他可以将代码$++更改为$s=$s+$WhateVertheNumber他想增加,这不是主要问题,主要问题是他错过了增加$s…对吗?你说得对因为他错过了该变量的增量/减量(例如,他得到了+$i
,但不是$s
)-但你在暗中捅了一刀,用它的值来增加它。@scrowler,好的两个名声…哦“…奇怪但$s_格式…在我的情况下不起作用。s显示时没有0。而且第一个循环在S1E20之前似乎只运行一次,但为什么它不会继续S02E01?”?
$s_formatted = str_pad($s, 2, '0', STR_PAD_LEFT);
echo '<input type="checkbox" value="S' . $s_formatted . 'E' . $i . '" name="rate"/>S' . $s . 'E' . $i . '<br/>';
++$i;
if ($s < 10) {
$s = '0' . $s;
}
$s++;