Php 合并具有相同键索引的数组取决于相同键的数量
已经有此代码显示此消息,它们是具有相同id和日期的组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
$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];
}
}