为什么 php while 不循环扫描 x #of 次并包含 x # 个文件


Why doesn't php while loop scan through x #of times and include x # of files?

我有一些代码用于根据表单输入创建电子邮件。第一个输入之一,名为"nosection"的数字输入用于控制电子邮件中的部分数。然后是"sectionblock"输入(例如sectionblock1,sectionblock2),用于控制电子邮件每个部分中的内容块。

我想使用一个 while 循环,它会遍历每个部分的值,直到达到"nosection"值,在运行时拉动每个部分的块......但是,它似乎只包括第一个部分块(即部分块1)。

例如,假设以下内容为真:

  • $nosections = 3
  • $sectionblock 1 = "品尝类块"
  • $sectionblock 2 = "rrtastings"
  • $sectionblock 3 = "葡萄酒特价"

有人可以告诉我为什么如果我运行上述内容,它只包含 tastetingclassblock 的代码块,而不是 rrtastings 和 winespecials 的代码块?

<?php 
$i=1; 
while ($i <= $nosections):
    if(${'sectionblock'.$i} == 'weekendtasting'):
        include('plaintext/weekend-tastings/weekend-tasting.php');
    elseif(${'sectionblock'.$i} == 'tastingclassblock'):
        include('plaintext/special-classes/tasting-class-code.php');
    elseif(${'sectionblock'.$i} == 'rrtastings'):
        include('plaintext/resroomtastings/tasting-class-code.php');
    elseif(${'sectionblock'.$i} == 'weeklyad'):
        include('plaintext/weekly-ad/weeklyad.php');
    elseif(${'sectionblock'.$i} == 'customerappreciation'):
        include('plaintext/customer-appreciation/customer-appreciation.php');
    elseif(${'sectionblock'.$i} == 'giftsets'):
        include('plaintext/holiday-giftsets/gift-sets-code.php');
    elseif(${'sectionblock'.$i} == 'winespecials'):
        include('plaintext/winespecials/wine-specials.php');
    elseif(${'sectionblock'.$i} == 'spiritspecials'):
        include('plaintext/spiritspecials/spirit-specials.php');
    elseif(${'sectionblock'.$i} == 'featuredfood'):
        include('plaintext/featured-foodgroup/featured-food-group.php');
    elseif(${'sectionblock'.$i} == 'featuredrecipe'):
        include('plaintext/featured-recipe/featured-recipe.php');
    endif;
$i++;
endwhile; ?>

在本地测试了您的代码,一切运行良好。首先,您应该检查$nosections是否真的获得了3的值。其次,您应该检查包含的任何错误,因为在本地我只是回显了它们,但是如果您遇到任何错误,则可能是因为错误的包含,因此while循环被停止。在包含include('plaintext/special-classes/tasting-class-code.php');后还要检查错误。此致敬意。

很抱歉浪费了你所有的时间。我刚刚意识到问题是什么。在我试图包含的几个模块上,我也在使用变量$i循环时运行。因此,在运行这些循环时,$i被膨胀到超过$nosections数字。我将变量名称更改为$s,一切似乎都在工作。

感谢您的友好回复。