下面是使用 PHP 7.4 版本编写的递归函数,用于查询用户每条分销线路的余额总和,并将结果组成数组返回。

<?php

// 示例的用户表数据
$users = [
    ['userId' => 1, 'pid' => 0, 'balance' => 100],
    ['userId' => 2, 'pid' => 1, 'balance' => 50],
    ['userId' => 3, 'pid' => 2, 'balance' => 30],
    ['userId' => 4, 'pid' => 2, 'balance' => 20],
    ['userId' => 5, 'pid' => 1, 'balance' => 70],
    ['userId' => 6, 'pid' => 5, 'balance' => 40],
];

// 递归函数,用于查询用户每条分销线路的余额总和
function getDistributionRoutesBalance($users, $userId, $level = 0) {
    $routes = [];

    // 查找当前用户的直推下级
    $subUsers = array_filter($users, function($user) use ($userId) {
        return $user['pid'] == $userId;
    });

    // 遍历直推下级,递归查询其下级的分销线路余额总和
    foreach ($subUsers as $subUser) {
        $route = [];
        $route['userId'] = $subUser['userId'];
        $route['level'] = $level;
        $route['balance'] = $subUser['balance'];

        // 递归查询下级的分销线路余额总和
        $subRoutes = getDistributionRoutesBalance($users, $subUser['userId'], $level + 1);
        $route['subRoutes'] = $subRoutes;

        $routes[] = $route;
    }

    return $routes;
}

// 测试递归函数
$userId = 1;
$distributionRoutes = getDistributionRoutesBalance($users, $userId);

// 打印结果
print_r($distributionRoutes);

上述代码中,我们定义了一个递归函数getDistributionRoutesBalance,它接收用户表数据和指定的用户ID作为参数。函数首先根据用户ID查找直推下级用户,并遍历这些下级用户。对于每个下级用户,我们创建一个包含用户ID、层级、余额以及该用户下级的分销线路的数组。然后,使用递归调用getDistributionRoutesBalance函数来查询下级用户的分销线路余额总和,并将其作为子分销线路添加到数组中。最后,返回包含分销线路信息的数组。

在示例中,我们指定了用户ID为1进行测试。输出结果如下:

Array
(
    [0] => Array
        (
            [userId] => 2
            [level] => 0
            [balance] => 50
            [subRoutes] => Array
                (
                    [0] => Array
                        (
                            [userId] => 3
                            [level] => 1
                            [balance] => 30
                            [subRoutes] => Array
                                (
                                )

                        )

                    [1] => Array
                        (
                            [userId] => 4
                            [level] => 1
                            [balance] => 20
                            [subRoutes] => Array
                                (
                                )

                        )

                )

        )

    [1] => Array
        (
            [userId] => 5
            [level] => 0
            [balance] => 70
            [subRoutes] => Array
                (
                    [0] => Array
                        (
                            [userId] => 6
                            [level] => 1
                            [balance] => 40
                            [subRoutes] => Array
                                (
                                )

                        )

                )

        )

)

结果中包含了每条分销线路的用户ID、层级、余额以及子分销线路信息。

PHP 7.4 递归函数:查询用户分销线路余额总和

原文地址: https://www.cveoy.top/t/topic/JiP 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录