2011-05-10 89 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次來填充你的數組。