如何基于共享state字段将二维数组行分组合并到另一数组的子数组中
实现方案
你可以通过先对职位数组按state字段分组,再遍历用户数组匹配对应职位的方式实现,性能更高且逻辑清晰,具体实现代码如下:
<?php $users = [ ['email' => 'oldemail@email.com', 'state' => 'IL'], ['email' => 'diditwork@email.com', 'state' => 'HI'], ]; $jobs = [ ['title' => 'Marketing Coordinator', 'location' => 'Chicago', 'state' => 'IL'], ['title' => 'Sales Manager (MA)', 'location' => 'Springfield', 'state' => 'IL'], ['title' => 'Security Guard/Driver', 'location' => 'Big Island', 'state' => 'HI'], ['title' => 'Directory of Sales and Operation Planning', 'location' => 'Honolulu', 'state' => 'HI'], ['title' => 'Associate, Strategic Finance', 'location' => 'Joliet', 'state' => 'IL'], ]; // 1. 先将jobs数组按state分组,生成state为键、对应职位列表为值的映射 $jobsGroupByState = []; foreach ($jobs as $job) { $state = $job['state']; $jobsGroupByState[$state][] = $job; } // 2. 遍历users数组,给每个用户匹配对应state的职位列表 $mergedResult = []; foreach ($users as $user) { // 匹配不到对应state的职位时默认赋值空数组,避免报错 $user['jobs'] = $jobsGroupByState[$user['state']] ?? []; $mergedResult[] = $user; } // 打印验证结果 print_r($mergedResult);
运行上述代码后输出的$mergedResult就是你需要的结构。
内容的提问来源于stack exchange,提问作者sjackson
相关产品推荐
相关产品推荐

