我在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。
答案 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)
原来是我的访问权限问题,无法查看数据库记录中的某些值。这些帖子帮助我找到了问题,并通过循环纠正了语法问题。