我在循环多维数组列表时遇到了一个奇怪的问题。
其逻辑是:
每个部门都有许多服务,每个服务都有许多用户。
这就是循环。
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 4覆盖了。我需要父服务的ID,这样我就可以做进一步的逻辑。
你知道为什么会发生这种情况吗?或者你知道我如何修复这堆代码吗?谢谢你。
EDIT:按照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
}
]
}
]
}
]
2条答案
按热度按时间nhaq1z211#
试着改变
$user->service_id = $departments[$i]->services[$j]->id;
到
$user->service_id = $service_id;
mm5n2pyu2#
尝试使用foreach()而不是
for()
,这使事情变得不那么复杂