麻烦PHP foreach循环

时间:2013-11-25 13:30:37

标签: php foreach

我在PHP脚本中使用foreach循环时遇到问题。我从数据库搜索中检索了一系列记录,现在我想获得找到的记录集中的一个字段的总数。到目前为止,这是我的代码:

foreach($result->getRecords() as $record){
    $recordTotal = $record->getField('products_total');
    $salesToday = $salesToday + $recordTotal;         
}  

如果找到5条记录且'products_total'字段的值为:

1 2 3 4 5

我想得到这些(15)的总数并将其存储在$ salesToday变量中。在此foreach循环之前,$ salesToday变量不存在。

有人能在我的代码中发现错误吗?如果我在循环后回显$ salesToday,我会得到0而不是15。

5 个答案:

答案 0 :(得分:0)

在循环之前声明$ salesToday。每次循环迭代都不会记住之前的值。 其原因是一种称为垃圾收集的自动内存管理形式。在它最简单的形式中,垃圾收集器将释放不再使用的内存。

在此示例中,$ salesToday变量仅在循环内声明,因此它期望变量仅在该循环中使用。比方说,你有另一个循环围绕你在那里的一切。如果你在第二个循环中声明了变量,那么它只能在第二个和第三个循环中使用,而不是第一个循环。对于函数/方法,if语句等也是如此。

答案 1 :(得分:0)

检查$ recordTotal是否在所有迭代中都有值。也许总是0。

$recordTotal = 0;
foreach($result->getRecords() as $record){
    $recordTotal = $record->getField('products_total');
    $salesToday += $recordTotal;         
} 

您可以尝试该代码,但使用的是与$ recordTotal var初始化的代码相同的代码。

答案 2 :(得分:0)

也许在for each循环之前初始化$ salesToday变量?

$salesToday = 0;

编辑:

$salesToday = 0;
foreach($result->getRecords() as $record){
    $salesToday += $record->getField('products_total');         
} 

答案 3 :(得分:0)

$salesToday=0;
foreach($result->getRecords() as $record){
    $salesToday += $record->getField('products_total');        
}
echo  'Today sales:'.$salesToday.'<br/>';

答案 4 :(得分:0)

原来是我的访问权限问题,无法查看数据库记录中的某些值。这些帖子帮助我找到了问题,并通过循环纠正了语法问题。