鍍金池/ 問(wèn)答/PHP/ 關(guān)于一個(gè)PHP遞歸處理統(tǒng)計(jì)的問(wèn)題

關(guān)于一個(gè)PHP遞歸處理統(tǒng)計(jì)的問(wèn)題

json數(shù)據(jù)為:

{
    "code": 0,
    "msg": "獲取項(xiàng)目列表成功",
    "data": {
        "2": {
            "project_id": 2,
            "project_name": "V稻",
            "project_parent_id": 0,
            "_completed": 0,
            "_uncompleted": 2,
            "_count": 2,
            "children": [
                {
                    "project_id": 6,
                    "project_name": "三級(jí)",
                    "project_parent_id": 2,
                    "_completed": 0,
                    "_uncompleted": 0,
                    "_count": 0
                },
                {
                    "project_id": 10,
                    "project_name": "測(cè)試項(xiàng)目名稱(chēng)",
                    "project_parent_id": 2,
                    "_completed": 0,
                    "_uncompleted": 0,
                    "_count": 0,
                    "children": [
                        {
                            "project_id": 11,
                            "project_name": "測(cè)試項(xiàng)目名稱(chēng)",
                            "project_parent_id": 10,
                            "_completed": 0,
                            "_uncompleted": 0,
                            "_count": 0
                        }
                    ]
                }
            ]
        }
    },
    "debug": {
        "sql": "SELECT `project_id`,`project_name`,`project_parent_id` FROM  `odp_project` WHERE `project_id` = '2' OR `root` = '2' LIMIT 0,4",
        "entry": []
    }
}

需求是將data中下級(jí)中的_completed,_uncompleted,_count統(tǒng)計(jì)到上一級(jí)中。請(qǐng)教這個(gè)遞歸該怎么寫(xiě)。

回答
編輯回答
小曖昧

先循環(huán)出上級(jí),然后使用array_column把下級(jí)的三個(gè)字段分別取出來(lái),然后array_sum進(jìn)行求和,就是你要的數(shù)據(jù)了。

2018年4月4日 11:05