【问题标题】:Having Trouble with PHP foreach loopPHP foreach 循环遇到问题
【发布时间】:2013-12-10 06:07:29
【问题描述】:

在我的 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 变量中。 $salesToday 变量在这个 foreach 循环之前不存在。

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

【问题讨论】:

  • 尝试执行var_dump($result->getRecords())(循环外)和var_dump($record->getField('products_total'))(循环内)- 这样您就可以检查所有结构是否格式正确。你也应该在循环之前初始化你的$salesToday
  • 这是什么 $record->getField('products_total') ?你能进一步详细说明吗?也许这根本没有价值,这就是为什么它会回到0。
  • 在循环之前设置 $salesToday = 0 是否有效?
  • 谢谢@AlmaDo - 原来是我的访问权限有问题,这就是它返回零的原因。感谢您帮助我使用 var_dump 找到问题 - 我以前没有使用过。

标签: php foreach


【解决方案1】:

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

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

您可以尝试该代码,但与您使用的代码相同,并且 $recordTotal 变量已初始化。

【讨论】:

    【解决方案2】:

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

    $salesToday = 0;
    

    编辑:

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

    【讨论】:

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

      【讨论】:

        【解决方案4】:

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

        在此示例中,$salesToday 变量仅在循环中声明,因此它希望该变量仅在该循环中使用。比如说,你有另一个循环围绕着你在那里的所有东西。如果您在第二个循环中声明了变量,则它仅在第二个和第三个循环中可用,而不是在第一个循环中可用。函数/方法、if 语句等也是如此。

        【讨论】:

          【解决方案5】:

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

          【讨论】:

            猜你喜欢
            • 2021-12-27
            • 2022-01-21
            • 2015-09-21
            • 1970-01-01
            • 2014-05-13
            • 2015-10-30
            • 1970-01-01
            • 1970-01-01
            • 2011-08-08
            相关资源
            最近更新 更多