博客列表 >数组父子关联之指定key的值之和

数组父子关联之指定key的值之和

Y的博客
Y的博客原创
2019年05月07日 22:25:411748浏览
$arr = [
    [
        'id' => 1,
        'name' => '软件开发',
        'parent_id' => 0,
        'total' => 5
    ],
    [
        'id' => 2,
        'name' => '系统技术',
        'parent_id' => 0,
        'total' => 3
    ],
    [
        'id' => 3,
        'name' => 'PHP',
        'parent_id' => 1,
        'total' => 6
    ],
    [
        'id' => 4,
        'name' => 'Javascript',
        'parent_id' => 1,
        'total' => 10
    ],
    [
        'id' => 5,
        'name' => 'Windows10',
        'parent_id' => 2,
        'total' => 12
    ],
    [
        'id' => 6,
        'name' => 'Windows7',
        'parent_id' => 2,
        'total' => 68
    ],
];
/**
 * 数组父子级指定字段之和
 * @function array_key_sum
 * @param $arr 数组
 * @param int $level 顶级默认为0
 * @return array
 * @auth 执笔画卿颜 丶 <365919529@qq.com>
 */
function array_key_sum($arr, $level = 0)
{

    if (!empty($arr)) {
        $result = [];
        foreach ($arr as $key => $value) {
            $result[$value['id']] = $value;
        }
        foreach ($arr as $key => $value) {
            // 如果父级为顶级 则不做修改
            if ($value['parent_id'] == $level) {
                // 跳过
                continue;
            } else {
                // 否则将指定字段的值相加
                $result[$value['parent_id']]['total'] += $value['total'];
            }
        }
        return array_values($result);
    }
}


声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议