用户层级关系 - ID 141 最下级用户直推上级权重计算
以下是根据给定数据结构,使用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之和。
原文地址: https://www.cveoy.top/t/topic/IOo 著作权归作者所有。请勿转载和采集!