$hours_effort_result
输出
Array
(
[0] => Array
(
[0] => Array
(
[EMPLOYEEID] => 14453
[EMPLOYEE_NAME] => User 1
[SKILL_NAME] => Application Software
[PROJECTED_HOURS] => 20
[SITE_STATUS] => Offshore
[MONTH_YEAR] => JUL-2015
)
[1] => Array
(
[EMPLOYEEID] => 14559
[EMPLOYEE_NAME] => User 2
[SKILL_NAME] => Application Software
[PROJECTED_HOURS] => 50
[SITE_STATUS] => Offshore
[MONTH_YEAR] => JUL-2015
)
[2] => Array
(
[EMPLOYEEID] => 14559
[EMPLOYEE_NAME] => User 2
[SKILL_NAME] => Application Software
[PROJECTED_HOURS] => 150
[SITE_STATUS] => Offshore
[MONTH_YEAR] => JUL-2015
)
[3] => Array
(
[EMPLOYEEID] => 14611
[EMPLOYEE_NAME] => User 3
[SKILL_NAME] => Application Software
[PROJECTED_HOURS] => 60
[SITE_STATUS] => Offshore
[MONTH_YEAR] => JUL-2015
)
数组操作
$user_array = Array();
foreach ($hours_effort_result as $key => $data) {
if (!empty($data)) {
foreach ($data as $key => $val) {
if ('JUL-2015' == $month) {
$user_array[$val['EMPLOYEE_NAME']][$month]['EMPLOYEEID'] = $val['ACTUAL_HOURS'];
$user_array[$val['EMPLOYEE_NAME']][$month]['SITE_STATUS'] = $val['SITE_STATUS'];
$user_array[$val['EMPLOYEE_NAME']][$month]['PROJECTED_HOURS'] = $val['PROJECTED_HOURS'];
}
}
}
}
$user_array
输出
Array
(
[User 1] => Array
(
[JUL-2015] => Array
(
[EMPLOYEEID] => 14453
[SITE_STATUS] => Offshore
[PROJECTED_HOURS] => 20
)
)
[User 2] => Array
(
[JUL-2015] => Array
(
[EMPLOYEEID] => 14559
[SITE_STATUS] => Offshore
[PROJECTED_HOURS] => 150
)
)
[User 3] => Array
(
[JUL-2015] => Array
(
[EMPLOYEEID] => 14611
[SITE_STATUS] => Offshore
[PROJECTED_HOURS] => 60
)
)
此处$user_array
有User 2
的两条记录,但仅显示one
条记录。值存储在同一key
,因此它会覆盖并显示该key
的最后一个值
如何避免这种情况并显示来自$hours_effort_result
的相同数量的记录?
所需的最终结果
Array
(
[User 1] => Array
(
[JUL-2015] => Array
(
[EMPLOYEEID] => 14453
[SITE_STATUS] => Offshore
[PROJECTED_HOURS] => 20
)
)
[User 2] => Array
(
[JUL-2015] => Array
(
[EMPLOYEEID] => 14559
[SITE_STATUS] => Offshore
[PROJECTED_HOURS] => 50
)
)
[User 2] => Array
(
[JUL-2015] => Array
(
[EMPLOYEEID] => 14559
[SITE_STATUS] => Offshore
[PROJECTED_HOURS] => 150
)
)
[User 3] => Array
(
[JUL-2015] => Array
(
[EMPLOYEEID] => 14611
[SITE_STATUS] => Offshore
[PROJECTED_HOURS] => 60
)
)
答案 0 :(得分:0)
更改您的PHP代码并尝试使用agian: -
$final_array = Array();
foreach ($hours_effort_result as $key => $data)
{
if (!empty($data))
{
foreach ($data as $key => $val)
{
if ('JUL-2015' == $month)
{
$user_array = Array();
$user_array[$val['EMPLOYEE_NAME']][$month]['EMPLOYEEID'] = $val['ACTUAL_HOURS'];
$user_array[$val['EMPLOYEE_NAME']][$month]['SITE_STATUS'] = $val['SITE_STATUS'];
$user_array[$val['EMPLOYEE_NAME']][$month]['PROJECTED_HOURS'] = $val['PROJECTED_HOURS'];
array_push($final_array, $user_array);
}
}
}
}
现在打印$ final_array,你得到了你想要的答案。
答案 1 :(得分:0)
问题是你正在使用其他东西作为关键,而且它不是唯一的。员工姓名与原始数组中的记录1和2相同。
只需为第二个数组使用唯一键。
答案 2 :(得分:-1)
相反
$user_array[$val['EMPLOYEE_NAME']][$month]['EMPLOYEEID'] = $val['ACTUAL_HOURS'];
$user_array[$val['EMPLOYEE_NAME']][$month]['SITE_STATUS'] = $val['SITE_STATUS'];
$user_array[$val['EMPLOYEE_NAME']][$month]['PROJECTED_HOURS'] = $val['PROJECTED_HOURS'];
使用
if (!isset($user_array[$val['EMPLOYEE_NAME']][$month])) {
$user_array[$val['EMPLOYEE_NAME']][$month] = array();
}
$user_array[$val['EMPLOYEE_NAME']][$month][] = array(
'EMPLOYEEID' => $val['ACTUAL_HOURS'],
'SITE_STATUS' => $val['SITE_STATUS'],
'PROJECTED_HOURS' => $val['PROJECTED_HOURS']
);