Php 合并具有相同键索引的数组取决于相同键的数量

Php 合并具有相同键索引的数组取决于相同键的数量,php,arrays,multidimensional-array,foreach,key,Php,Arrays,Multidimensional Array,Foreach,Key,已经有此代码显示此消息,它们是具有相同id和日期的组 $groupLevelOne = array(); foreach ($data['display'] as $item) { $key = implode($data['data'][$i]['eid']) .date('Y-m',strtotime($item['date_d'][0])); if (!isset($groupLevelOne[$key])) { $groupLevelOne[$key] = array

已经有此代码显示此消息,它们是具有相同id和日期的组

$groupLevelOne = array();
foreach ($data['display'] as $item) {
  $key = implode($data['data'][$i]['eid'])
  .date('Y-m',strtotime($item['date_d'][0]));
  if (!isset($groupLevelOne[$key])) {
    $groupLevelOne[$key] = array(
      'employeeId' => $data['data'][$i]['eid'],
      'efullname' => $item['fullname'][0],
      'date_d' => date('Y-m',strtotime($item['date_d'][0])),
      'hrsdiff' => $item['hrsdiff'][0],
      'dayspresent' => $item['key'][0],
    );
  } 
  else {
    $groupLevelOne[$key]['dayspresent'] = $groupLevelOne[$key]['dayspresent'] + $item['key'][0];
  }
  $i++;
}
还有,我的下一级op分组应该与相同的employeeID和不同的日期标识符合并,这将是一个如下所示的数组

Array
(
    [12014-01] => Array
        (
            [employeeId] => Array
                (
                    [0] => 1
                )

            [efullname] => IBARDOLAZA VIRGILIO
            [date_d] => 2014-01
            [hrsdiff] => 5.0333
            [dayspresent] => 2
        )

    [12014-02] => Array
        (
            [employeeId] => Array
                (
                    [0] => 1
                )

            [efullname] => IBARDOLAZA VIRGILIO
            [date_d] => 2014-02
            [hrsdiff] => 8.0333
            [dayspresent] => 24
        )

    [12014-03] => Array
        (
            [employeeId] => Array
                (
                    [0] => 1
                )

            [efullname] => IBARDOLAZA VIRGILIO
            [date_d] => 2014-03
            [hrsdiff] => 8.0667
            [dayspresent] => 26
        )

   )
------跟进问题-------

[1] => Array
      (
         [employeeId] => Array
           (
              [0] => 1
           )

           [efullname] => IBARDOLAZA VIRGILIO
           [date_d1] =>2014-01
           [dayspresent1] => 2
           [date_d2] =>2014-02
           [dayspresent2] => 24
           [date_d3] =>2014-03
           [dayspresent3] => 26
     )
我希望我的第一个索引具有[2014-01]=>0
因此,他们将拥有所有相同的天数索引

您可以在一次运行中完成所有这一切:

[0] => Array
        (
            [employeeId] => 21
            [efullname] => MANOGURA EDGAR
            [hrsdiff] => 2.2331
            [days] => Array
                (
                    [2014-02] => 23
                    [2014-03] => 26
                    [2014-04] => 23
                )

        )

[1] => Array
        (
            [employeeId] => 1
            [efullname] => IBARDOLAZA VIRGILIO
            [hrsdiff] => 5.0333
            [days] => Array
                (
                    [2014-01] => 2
                    [2014-02] => 24
                    [2014-03] => 26
                    [2014-04] => 26
                )

        )

如果我也有一个hrsdiff数组,我应该对天做同样的事情??另一个问题,先生,其他id有4个数组天,而其他id有3个。。。如何填充missing,使其具有相同的日期,但具有0值it@kry我建议为此再写一个问题,因为我真的不知道你的意思。@kry在同一篇文章中写后续问题是不好的;你应该写一个新的问题,从中你可以链接到这里作为参考。哦,对不起,这是我第一次在这里发布它好的,我会这样做的!谢谢
$groups = array();
foreach ($data['display'] as $item) {
    $eid = implode($data['data'][$i]['eid']);
    $date = date('Y-m',strtotime($item['date_d'][0]));

    if (!isset($groups[$eid])) {
        $groups[$eid] = array(
            'employeeId' => $eid,
            'efullname' => $item['fullname'][0],
            'hrsdiff' => $item['hrsdiff'][0],
            'days' => array(
                $date => $item['key'][0],
            )
        );
    } else {
        @$groups[$eid]['days'][$date] += $item['key'][0];
    }
}