PHP while循环执行时间

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

我正在努力与以下代码,无法找到一个可以解决它。页面加载时间过长,出现“致命错误:超过最大执行时间30秒”错误

也许有人能解释一下或者给点建议

<?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++;