【问题标题】:Sum up values after retrieving from database using PHP使用 PHP 从数据库中检索后的值求和
【发布时间】:2012-04-07 21:35:55
【问题描述】:

我正在从 mysql 数据库中获取一些信息,并使用以下脚本显示它(我正在使用 Codeigniter)

 <?php if(count($records) > 0) { ?>

   <?php $i = $this->uri->segment(3) + 0; foreach ($records as $row){ $i++; ?>
<?php echo $row['amount']; ?>    <br>

<?php  } ?>

<?php } else { echo "No Record Found";} ?>

我得到的输出如下

10,000
20,000.34
15,250.50

现在我要做的是总结 $row['amount']; 中的所有值并将总和的值放入 $sum_value 以便当我回显 $sum_value 时得到以下值

45,250.84

请你告诉我怎么做。

我知道我可以使用 mysql 完成求和的事情,但我想学习如何做到这一点。

在此先感谢 :)

【问题讨论】:

    标签: php codeigniter codeigniter-2


    【解决方案1】:

    通过 foreach 的每个循环迭代地添加到您的总和:

    $sum = 0;
    foreach ( $records as $row ) {
      $sum += str_replace(",", "", $row['amount']);
    }
    
    echo number_format( $sum, 2 );
    

    【讨论】:

    • 行不通。他的数字是字符串,php 会将其视为 10、20 和 15
    • @d_inevitable 好点。删除逗号允许正确的转换。
    • @black_belt 天才在 Apple Store 工作。我只是一名开发人员;)
    【解决方案2】:

    大概是这样的:

    <?
    if(count($records) > 0) {
       $i = $this->uri->segment(3) + 0; 
       $sum_value = 0;
       foreach ($records as $row){ 
    
          $i++; // Don't know what you use $i for, get rid of it if unnecessary
    
          // Add value to the sum
          $sum_value += (float)str_replace(",", "", $row["amount"]); 
    
          // Print the current value
          echo $row['amount'] + "<br/>";
    
       }
    
       echo $sum_value;  // Print the total sum after the loop
    
    } else { 
       echo "No Record Found";
    } ?>
    

    【讨论】:

      【解决方案3】:

      首先你需要把它转换成正确的数字:

      $nums = array_map(function(&$row) {
         return (float) str_replace(',', '',$row['amount']);
      }, $records);
      

      那么你可以使用array_sum:

      echo number_format(array_sum($nums), 2);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-02-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-12-05
        • 1970-01-01
        相关资源
        最近更新 更多