我有一些代码用于根据表单输入创建电子邮件。第一个输入之一,名为"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,一切似乎都在工作。
感谢您的友好回复。