【问题标题】:PHP merge several rows if duplicate value in cells如果单元格中的值重复,PHP会合并几行
【发布时间】:2019-11-09 18:01:33
【问题描述】:

我正在从 MySQL 数据库中提取行。每行包含一个日期和一个金额 (USD)。有些日期是相同的。我已经尝试了几个小时来合并具有相同日期的那些行的数量。

我已经尝试过array_merge 以及多个if 语句、foreach 以及while。

while($row2 = mysqli_fetch_array($result3)) {

  array_push($mergeDuplicateDate,
    array(                                   
      $row2[1], //date                                                                           
      $row2[2] //amount
    )
  );

};

如果输出看起来像:

06-25-2019, $5

06-25-2019, $10

06-26-2019, $2

06-26-2019, $1

我希望它总结如下:

06-25-2019, $15

06-26-2019, $3

我知道用 PHP 做起来不会那么难,但我在编程方面并不是很有经验。到目前为止,我可以用谷歌搜索我遇到的任何问题。这一次,我似乎无法找到答案。我真的不知道从哪里开始解决这个问题。

提前感谢任何人告诉我!

【问题讨论】:

  • 创建一个关联数组,其键是日期。循环遍历数据并将每个数量添加到具有该键的元素中。
  • 为什么不在查询中做呢? SELECT date, SUM(amount) FROM table GROUP BY date
  • @barmar 我希望你在金额字段中没有真正的 $ 但是在太阳不照耀的深处你知道他们有 :)
  • @RiggsFolly 我将更新我玫瑰色眼镜上的处方 :)
  • SUM(REPLACE(amount, '$', '')) 如有必要

标签: php arrays merge duplicates


【解决方案1】:

最好的方法是在 cmets 中 @barmar 提到的 MySQL 查询中使用 group by。

如果你真的想用 PHP 来做,你可以使用下面的代码

$finalArray=[];
while($row2 = mysqli_fetch_array($result3)) {
  $finalArray[$row2[1]] = $finalArray[$row2[1]] ? $finalArray[$row2[1]] +$row2[2] : $row2[2];
};

【讨论】:

    【解决方案2】:

    使用数据库,它是解决问题的计算成本最低的方法。呵呵

    SELECT date ,SUM(amount) FROM table GROUP BY date ASC                                                                    
    

    【讨论】:

    • 自从我开始加入多个数据库以来,我目前的技能水平似乎很难确定是否可以包含 SUM 以及在哪里包含 SUM。我已经使用了 PHP assoc 数组,它就像一个魅力:)
    猜你喜欢
    • 2015-08-05
    • 2021-02-14
    • 2016-03-25
    • 2016-11-30
    • 2018-08-06
    • 1970-01-01
    • 1970-01-01
    • 2018-07-09
    相关资源
    最近更新 更多