我有一个奇怪的问题,循环通过一个多维的数组列表。
逻辑是这样的:
每个部门都有很多服务,每个服务都有很多用户。
这就是循环。
for ($i=0; $i < count($departments); $i++) {
for ($j=0; $j < count($departments[$i]->services); $j++) {
$service_id = $departments[$i]->services[$j]->id;
for ($k=0; $k < count($departments[$i]->services[$j]->users); $k++) {
$user = $departments[$i]->services[$j]->users[$k];
$user->service_id = $departments[$i]->services[$j]->id;
}
}
}结果是:
{
"id": 1,
"name": "Coafor",
"company_id": 1,
"services": [
{
"id": 1,
"name": "Coafat par scurt",
"department_id": 1,
"users": [
{
"id": 4,
"first_name": "Andrei",
"last_name": "Varlan",
"service_id": 4
},
{
"id": 7,
"first_name": "Claudiu",
"last_name": "Angheluta",
"service_id": 4
}
]
},
]
}正如您所看到的,每个用户中的服务id需要是主服务上的ID,但它被最后一个服务id覆盖,最后一个服务ID是4。我需要来自父服务的ID,这样我才能做进一步的逻辑。
为什么会发生这种情况,或者我该如何修复这堆代码?谢谢。
编辑:当Mateusz请求查看所有部门数组时。
[
{
"id": 1,
"name": "Coafor",
"company_id": 1,
"services": [
{
"id": 1,
"name": "Coafat par scurt",
"department_id": 1,
"users": [
{
"id": 4,
"first_name": "Andrei",
"last_name": "Varlan",
"service_id": 4
},
{
"id": 7,
"first_name": "Claudiu",
"last_name": "Angheluta",
"service_id": 4
}
]
},
{
"id": 5,
"name": "Vopsit par mediu",
"department_id": 1,
"users": [
{
"id": 4,
"first_name": "Andrei",
"last_name": "Varlan",
"service_id": 4
},
{
"id": 5,
"first_name": "Andrei",
"last_name": "Cazamir",
"service_id": 4
},
{
"id": 6,
"first_name": "Luminita",
"last_name": "Cucu",
"service_id": 4
},
{
"id": 7,
"first_name": "Claudiu",
"last_name": "Angheluta",
"service_id": 4
}
]
},
{
"id": 6,
"name": "Vopsit par lung",
"department_id": 1,
"users": [
{
"id": 4,
"first_name": "Andrei",
"last_name": "Varlan",
"service_id": 4
},
{
"id": 5,
"first_name": "Andrei",
"last_name": "Cazamir",
"service_id": 4
},
{
"id": 6,
"first_name": "Luminita",
"last_name": "Cucu",
"service_id": 4
},
{
"id": 7,
"first_name": "Claudiu",
"last_name": "Angheluta",
"service_id": 4
}
]
}
]
},
{
"id": 2,
"name": "Frizerie",
"company_id": 2,
"services": [
{
"id": 2,
"name": "Tuns par mediu",
"department_id": 2,
"users": [
{
"id": 4,
"first_name": "Andrei",
"last_name": "Varlan",
"service_id": 4
},
{
"id": 5,
"first_name": "Andrei",
"last_name": "Cazamir",
"service_id": 4
},
{
"id": 6,
"first_name": "Luminita",
"last_name": "Cucu",
"service_id": 4
},
{
"id": 7,
"first_name": "Claudiu",
"last_name": "Angheluta",
"service_id": 4
}
]
},
{
"id": 3,
"name": "Tuns par lung",
"department_id": 2,
"users": [
{
"id": 4,
"first_name": "Andrei",
"last_name": "Varlan",
"service_id": 4
},
{
"id": 5,
"first_name": "Andrei",
"last_name": "Cazamir",
"service_id": 4
},
{
"id": 6,
"first_name": "Luminita",
"last_name": "Cucu",
"service_id": 4
},
{
"id": 7,
"first_name": "Claudiu",
"last_name": "Angheluta",
"service_id": 4
}
]
},
{
"id": 4,
"name": "Tuns si Vopsit par scurt",
"department_id": 2,
"users": [
{
"id": 4,
"first_name": "Andrei",
"last_name": "Varlan",
"service_id": 4
},
{
"id": 5,
"first_name": "Andrei",
"last_name": "Cazamir",
"service_id": 4
},
{
"id": 6,
"first_name": "Luminita",
"last_name": "Cucu",
"service_id": 4
},
{
"id": 7,
"first_name": "Claudiu",
"last_name": "Angheluta",
"service_id": 4
}
]
}
]
}
]发布于 2017-10-03 00:55:31
试着改变
$user->service_id = $departments[$i]->services[$j]->id;
至
$user->service_id = $service_id;
发布于 2017-10-03 01:28:01
试着用foreach()代替for(),这样会让事情变得更简单
<?php
foreach ($departments as $department) {
foreach ($department->services as $service) {
foreach ($service->users as $user) {
$user->service_id = $service->id;
}
}
}https://stackoverflow.com/questions/46529899
复制相似问题