<?php
// initial value
$week = 50;
$year = 2001;
$store = array();
do
{
$week++;
$result = "$week/$year";
array_push($store,$result);
if($week == 53){
$week = 0;
$year++;//increment year by 1
}
continue;
}
// End of Loop
while ($result !== "2/2002");
?>
print_r($store);
结果希望返回
array("51/2001", "52/2001", "01/2002", "02/2002");
使用do..while时继续使用是什么问题?
答案 0 :(得分:5)
array_push
的论证是错误的。阅读您使用的功能的手册条目。打开服务器上的警告; running这在键盘中立刻向我展示了问题。$i
而不是$week
。固定代码(live demo):
<?php
// initial value
$week = 50;
$year = 2001;
$store = array();
do
{
$week++;
$result = "$week/$year";
array_push($store, $result);
if($week == 53){
$week = 0;
$year++;//increment year by 1
}
continue;
}
// End of Loop
while ($result !== "2/2002");
?>
一般情况下,我建议反对这样的循环。正如您所发现的,您的代码非常脆弱,因为您只测试了一个非常具体的值,如果该值不正确,则会得到无限循环。
相反,请考虑单独和数字地比较$week
和$year
:
while ($week < 2 && $year <= 2002)
下次请在您的问题中添加您 看到的输出,以及您想要查看的输出。它可以节省我们重现问题的时间。
答案 1 :(得分:0)
我可能无法正确理解这一点......如果你能解释一下那会有所帮助。
尝试将循环转换为函数,然后转动while(..)以检查函数变量。
然后只需调用它4次即可填充阵列。