【发布时间】:2020-03-20 01:33:19
【问题描述】:
我有两个数组:
第一个看起来像这样:
Array: 8 [▼
0 => array:17 [▼
"id" => 4
"firstname" => "Maria"
"lastname" => "von Moszczenski"
"slug" => "marianne-von-moszczenski"
"email" => "marianne.von.moszczenski@gmail.com"
"email_verified_at" => null
"created_at" => "2019-11-21 17:34:53"
"updated_at" => "2019-11-21 17:34:53"
"deleted_at" => null
]
1 => User {...}
2 => User {...}
3 => User {...}
... unknown number of elements
]
第二个数组如下所示:
array:8 [▼
"Maria" => 17
"Stefanie" => 2
"Angela" => 3
"Andrea" => 4
"Michelle" => 5
"Yvonne" => 6
"Martina" => 7
"Karolina" => 8
... unknown number of elements...
]
我想合并它们,所以我得到以下结构:
Array: 8 [▼
0 => array:17 [▼
"id" => 4
"firstname" => "Maria"
"lastname" => "von Moszczenski"
"slug" => "marianne-von-moszczenski"
"email" => "marianne.von.moszczenski@gmail.com"
"email_verified_at" => null
"created_at" => "2019-11-21 17:34:53"
"updated_at" => "2019-11-21 17:34:53"
"deleted_at" => null
"total" => 17 // <------ this is the new field
... unknown number of elements...
]
1 => User {...}
2 => User {...}
3 => User {...}
]
所以我这样做了:
foreach ($totalsPerEmployee as $key => $total) {
foreach ($users as $user) {
if ($user['firstname'] === $key) {
$user['totalappointments'] = $total; // if I stop and echo hier I see the new field
}
}
}
如果我在中间回显foreach的结果,我看到添加了新字段,但是一旦两个foreach结束,则没有添加新字段。
我的问题是:
这种方法看起来容易出错,或者如果数组变得太大可能会导致性能问题。
是否有任何其他方式来映射/组合/相交或这两个数组将第一个中的一个属性(名字)映射到第二个的键?
如果没有任何“魔术”方法,我必须进行两个循环。我做错了什么?
【问题讨论】: