2014-04-01 31 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