首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >php foreach in foreach in foreach / for循环重写with last

php foreach in foreach in foreach / for循环重写with last
EN

Stack Overflow用户
提问于 2017-10-03 00:40:39
回答 2查看 58关注 0票数 0

我有一个奇怪的问题,循环通过一个多维的数组列表。

逻辑是这样的:

每个部门都有很多服务,每个服务都有很多用户。

这就是循环。

代码语言:javascript
复制
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;

        }

    }

}

结果是:

代码语言:javascript
复制
{
    "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请求查看所有部门数组时。

代码语言:javascript
复制
[
    {
        "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
                    }
                ]
            }
        ]
    }
]
EN

回答 2

Stack Overflow用户

发布于 2017-10-03 00:55:31

试着改变

$user->service_id = $departments[$i]->services[$j]->id;

$user->service_id = $service_id;

票数 0
EN

Stack Overflow用户

发布于 2017-10-03 01:28:01

试着用foreach()代替for(),这样会让事情变得更简单

代码语言:javascript
复制
<?php
foreach ($departments as $department) {
    foreach ($department->services as $service) {
        foreach ($service->users as $user) {
            $user->service_id = $service->id;
        }
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46529899

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档