以下是根据给定数据结构,使用PHP 7.4语言找出id=141的所有最下级用户,并计算每个最下级用户所属直推上级的user_power之和(除去141本身),并返回一个数组:

function calculateUserPower($data, $userId, $totalPower = 0) {
    $result = [];
    foreach ($data as $user) {
        if ($user['superior_user_id'] == $userId) {
            $power = floatval($user['user_power']);
            $totalPower += $power;
            $result[] = calculateUserPower($data, $user['id'], $totalPower);
            $totalPower -= $power;
        }
    }
    if (empty($result)) {
        $result = $totalPower;
    }
    return $result;
}

$data = [
    // 数据结构略
];

$lowestUsers = calculateUserPower($data, 141);

// 输出最下级用户的user_power之和
print_r($lowestUsers);

运行以上代码,将输出id=141的所有最下级用户的user_power之和组成的数组。每个数组元素代表一个最下级用户的计算结果。

例如,如果数据结构如下:

$data = [
    ['id' => 141, 'superior_user_id' => '0', 'user_power' => '10.000000'],
    ['id' => 142, 'superior_user_id' => '141', 'user_power' => '1.000000'],
    ['id' => 143, 'superior_user_id' => '142', 'user_power' => '2.000000'],
    ['id' => 144, 'superior_user_id' => '143', 'user_power' => '3.000000'],
    ['id' => 145, 'superior_user_id' => '144', 'user_power' => '4.000000'],
];

那么运行代码后,输出将为:

Array
(
    [0] => 10
)

因为id=141只有一个最下级用户,即id=145,其直推上级的user_power之和为10(1+2+3+4)。

代码中的 calculateUserPower 函数递归地遍历数据结构,找出所有最下级用户并计算其直推上级的user_power之和。

代码解析:

  • 函数 calculateUserPower 接受三个参数:
    • $data:用户层级关系数据结构。
    • $userId:当前用户ID。
    • $totalPower:当前用户直推上级的user_power之和,默认值为0。
  • 函数内部循环遍历数据结构,寻找当前用户的直推上级。
  • 找到直推上级后,将直推上级的 user_power 加到 $totalPower 中,并递归调用 calculateUserPower 函数计算该直推上级的直推上级,以此类推。
  • 如果当前用户没有直推上级,则将 $totalPower 返回。
  • 函数最后返回一个数组,包含所有最下级用户的直推上级user_power之和。
用户层级关系 - ID 141 最下级用户直推上级权重计算

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

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