2014-04-01 27 views
0

我試圖從多個記錄(不知道有多少記錄可能在任何時間)使用while循環和array_fill構建一個數組,但它沒有按照我希望的方式工作。它是用每條記錄覆蓋數組,然後在while循環完成執行後數組中唯一的數據,是加載的最後一條記錄。在while循環中使用array_fill

$reward是被覆蓋的變量。使我抓狂!我希望看到它將$reward構建成由我正在查詢的3個記錄(在本例中)組成的合併數組。但它最終成爲找到的最後一個記錄。我究竟做錯了什麼?

while ($WhileLoop <= $PrizeCount) { 
    print "<!-- Loop # [" . $WhileLoop . "] -->\n"; 
    $Prize1Credits = $PrizeRecord["Prize_Credits"]; 
    $print "<!-- Cred # [" . $Prize1Credits . "] -->\n"; 
    $Prize1ID = $PrizeRecord["Prize_ID"]; 
    print "<!-- ID # [" . $Prize1ID . "] -->\n"; 
    $reward = array_fill($ArrayIndex,$Prize1Credits,$Prize1ID); 
    print "<!-- IND # [" . $ArrayIndex . "] -->\n"; 
    $ArrayIndex += $Prize1Credits; 
    $WhileLoop++; 
    $DBConnection->next_record();     
    $PrizeRecord = $DBConnection->Record; 
} 

回答

1

正如你所說,你是凌駕$reward陣列。您可以使用+操作上陣列不斷添加新記錄$reward

在while循環:

$reward += array_fill($ArrayIndex,$Prize1Credits,$Prize1ID); 

但是,爲了使這個代碼更易讀我寧願一個循環:

for ($i = 0; $i < $Prize1Credits, $i++) { 
    $reward[] = $Prize1ID; 
} 
// no need for $ArrayIndex 
+0

我嘗試的第一件事情之一是+ =操作數,它會引發一個致命的「你不能在數組中使用該操作數」類型的消息。但是,您的for循環(在Prize1Credits之後將逗號切換爲分號)像魅力一樣工作。謝啦! –

+0

不客氣。順便說一句,你爲什麼迭代一個自定義變量'$ WhileLoop'?直到$ DBConnection-> next_record()返回一個像'while($ DBConnection-> next_record())'這樣的值才能迭代嗎? – mesutozer