任务分配中多维数组重构求助:转换为指定嵌套格式
数组结构转换解决方案
首先,明确你的需求:把原有的$productsArray数组,按照t_assign_to → t_project → allocated_day的层级重新组织,最终每个日期对应的是t_start_time的值。
原数组结构(print_r输出)
Array ( [0] => Array ( [allocation_date] => 2018-01-01 [t_project] => 10001 [t_assign_to] => G2E0357 [t_start_time] => 01:30 PM [t_end_time] => 11:30 AM [allocated_day] => 2018-01-01 ) [1] => Array ( [allocation_date] => 2018-01-02 [t_project] => 10001 [t_assign_to] => G2E0357 [t_start_time] => 01:30 PM [t_end_time] => 11:30 AM [allocated_day] => 2018-01-02 ) [2] => Array ( [allocation_date] => 2018-01-03 [t_project] => 10001 [t_assign_to] => G2E0357 [t_start_time] => 01:30 PM [t_end_time] => 11:30 AM [allocated_day] => 2018-01-03 ) [3] => Array ( [allocation_date] => 2018-01-18 [t_project] => 10008 [t_assign_to] => XPL0315 [t_start_time] => 11:30 AM [t_end_time] => 07:30 PM [allocated_day] => 2018-01-18 ) [4] => Array ( [allocation_date] => 2018-01-19 [t_project] => 10008 [t_assign_to] => XPL0315 [t_start_time] => 11:30 AM [t_end_time] => 07:30 PM [allocated_day] => 2018-01-19 ) [5] => Array ( [allocation_date] => 2018-01-20 [t_project] => 10008 [t_assign_to] => XPL0315 [t_start_time] => 11:30 AM [t_end_time] => 07:30 PM [allocated_day] => 2018-01-20 ) [6] => Array ( [allocation_date] => 2018-01-25 [t_project] => 10008 [t_assign_to] => G2E0357 [t_start_time] => 10:30 AM [t_end_time] => 01:30 PM [allocated_day] => 2018-01-25 ) [7] => Array ( [allocation_date] => 2018-01-26 [t_project] => 10008 [t_assign_to] => G2E0357 [t_start_time] => 10:30 AM [t_end_time] => 01:30 PM [allocated_day] => 2018-01-26 ) [8] => Array ( [allocation_date] => 2018-01-27 [t_project] => 10008 [t_assign_to] => G2E0357 [t_start_time] => 10:30 AM [t_end_time] => 01:30 PM [allocated_day] => 2018-01-27 ) )
预期目标数组结构
Array ( [G2E0357] => Array ( [10001] => Array ( [2018-01-01] => 01:30 PM [2018-01-02] => 01:30 PM [2018-01-03] => 01:30 PM ) [10008] => Array ( [2018-01-25] => 10:30 AM [2018-01-26] => 10:30 AM [2018-01-27] => 10:30 AM ) ) [XPL0315] => Array ( [10008] => Array ( [2018-01-18] => 11:30 AM [2018-01-19] => 11:30 AM [2018-01-20] => 11:30 AM ) ) )
你之前代码的问题
你之前的代码只构建了两层结构,把t_project作为日期对应的值,没有把t_project设为中间层级的键,所以结构和预期不符。
修正后的代码
$project_name = array(); foreach ($productsArray as $item) { // 直接构建三级嵌套数组:员工ID → 项目ID → 日期,对应值为开始时间 $project_name[$item['t_assign_to']][$item['t_project']][$item['allocated_day']] = $item['t_start_time']; } print_r($project_name);
代码说明
这段循环代码直接按照需求的层级关系构建数组:
- 第一级键为
t_assign_to的员工ID值 - 第二级键为
t_project的项目ID值 - 第三级键为
allocated_day的日期值 - 最终每个日期对应的是
t_start_time的时间字符串
运行这段代码就能得到你想要的数组结构啦~
内容的提问来源于stack exchange,提问作者Mithun M
相关产品推荐
相关产品推荐

