【问题标题】:Create a new array having Sum of the same key and values of Array in PHP在 PHP 中创建一个具有相同键和值的数组的新数组
【发布时间】:2016-07-29 06:46:16
【问题描述】:
来自数据库的结果 ( [ID] => 3167 [数据ID] => 1 [数据] => P01273 [小时] => 1 [月] => 1 ) ( [ID] => 3168 [数据ID] => 1 [数据] => P01273 [小时] => 1 [月] => 2 ) ( [ID] => 3191 [数据ID] => 2 [数据] => P01273 [小时] => 10 [月] => 1 ) ( [ID] => 3196 [数据ID] => 2 [数据] => P01273 [小时] => 10 [月] => 2 ) ( [ID] => 3189 [数据ID] => 2 [数据] => P00428 [小时] => 22 [月] => 2 ) ( [ID] => 3189 [数据ID] => 2 [数据] => P004299 [小时] => 22 [月] => 2 ) 如果月份和数据相等,则计算小时的总和 需要输出 ( [ID] => 3167 [数据ID] => 1 [数据] => P01273 [小时] => 11(加 1+11) [月] => 1 ) ( [ID] => 3168 [数据ID] => 1 [数据] => P01273 [小时] => 11(加 1+11) [月] => 2 ) ( [ID] => 3189 [数据ID] => 2 [数据] => P00428 [小时] => 22 [月] => 2 ) ( [ID] => 3189 [数据ID] => 2 [数据] => P004299 [小时] => 22 [月] => 2 )

【问题讨论】:

  • 无法理解您的问题
  • 第一个 id 中的 sum 是如何产生的
  • 我建议您将问题陈述更改为:合并“数据”和“月份”相同的数组元素,同时将小时数相加。查看下面的解决方案

标签: php mysql arrays


【解决方案1】:

这是主要思想。尚未执行脚本,因此您必须进行错误修复(如果有)。干杯。

  $newarray = array(); // global

    while($row = mysql_fetch_assoc($result)){

       if($idx = isdatasame($row)){
          $newarray[$idx]['hour'] += $row['hour']; // add hour to existing record
       }
       else{
          $newarray[] = $row;  // if record not in $newarray add new record
       }

    }

    function isdatasame($row){
      global $newarray;
      for($i=0; $i<COUNT($newarray); $i++){
        if($newarray[$i]['data']==$row['data'] && $newarray[$i]['month']==$row['month'] )
            return $i;
      }
      return false;
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-07-18
    • 2010-11-07
    • 1970-01-01
    • 2015-01-04
    • 1970-01-01
    • 1970-01-01
    • 2014-03-12
    • 1970-01-01
    相关资源
    最近更新 更多