2011-05-10 50 views
1
<?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); 

结果要回报将是使用do..while,继续?

array("51/2001", "52/2001", "01/2002", "02/2002"); 

什么是我的问题,通过同时使用do..while,是否继续?

+1

那是不对的 – kn3l 2011-05-10 15:41:13

回答

4
  • 您对 array_push的论点是错误的。阅读您使用的功能的手册条目。打开服务器上的警告; running这在键盘上立即显示了我的问题。 [编辑:你现在已经悄悄地固定在你的问题。]
  • 你也有一个错字:的$i代替$week
  • 最后,您针对“02/2002”进行测试,但该月的字符串将为“2/2002”。

固定码(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) 

下一次在你的问题请提供您想要的输出,你见状,以及输出到看到。这会节省我们时间来重现您的问题。

+0

'array_push'的参数是正确的 - 'array_push($ arr,$ value)'。正如你注意到的,RTFM - http://www.php.net/manual/en/function.array-push.php – 2011-05-10 15:46:11

+0

@Jason:OP通过编辑修正了他的问题。看看问题的修订历史。 – 2011-05-10 15:47:33

+0

+1必须错过该修订。彻底的答案。 – 2011-05-10 15:49:10

0

我可能不会理解这个正确的......如果你能解释更多,那会有所帮助。

尝试将循环转换为函数,并转动while(..)来检查函数变量。

然后只需调用它4次来填充你的数组。