<?php
//CONFIG 设置
//提成率MAPphp递归函数,级别 => 提成率
//第一级提成100,第二级别提成100*0.2,....
$ratiomap = array (
1 => 1,
2 => 0.2,
3 => 0.1
);
//最大分成级别
//最多提成3级
$maxlevel = 3;
//FUNCTIONS 函数
//递归提成
function give_levelmoney($id, $level=1) {
global $ratiomap, $maxlevel;
if ($level > $maxlevel) {
//如果目标级别已经超过最大级别,就退出递归
return;
}
//读取$id的信息
$info = get_levelinfo($id);
//取得目标级别的提成率
$ratio = $ratiomap[$level];
//计算提成的金额
$addmoney = $info[\'jine\'] * $ratio;
//给用户提成
add_money($id, $addmoney);
//增加级别
$level++;
//递归调用,处理推荐人的提成
give_levelmoney($info[\'tuijian\'], $level);
}
//获取$id对应的数据
function get_levelinfo($id) {
//这里要从DB中查询出相应id的数据
//需要你实现
return array (
\'id\' => $id,
\'tuijian\' => $tuijianid, //推荐人ID
\'jine\' => $jine //金额
);
}
//为$id用户加钱
function add_money($id, $addmoney) {
//这里要写DB,给ID为$id用户加钱$addmoney
//需要你实现
}
//TESTS 调用方法
//$id = \'05\';
//give_levelmoney($id);
?>
请先把DB的功能实现补全,然后按照我的方法,调用:
$id = \'05\';
give_levelmoney($id);
这样程序先会给 05 加 100 * 1 的钱,然后找到他的推荐人 02,给 02 加 100 * 0.2 的钱 ....
一直做完 04 后,超过最大级别,退出函数
// GET ALL THE IDS THAT TUIJIAN IS EMPTY$sql = \" SELECT `id`,`tuijian`,`jine` FROM `数据库表` \";$result = mysql_query($sql);while ($row = mysql_fetch_array($result)){ // all people has tuijian account // Add 20 points account if(!empty($row[`tuijian`])) $addTwityPointsAccount[] = $row[\'tuijian\']; // all people account $allRecords[] = $row;}// add 10 point accountforeach($allRecords AS $key => $value){ if(in_array($value[\'id\'],$addTwityPointsAccount)) $addTenPointsAccount[] = $value[\'id\'];}// do the add points sql$sql = \"UPDATE `数据库表`SET `jine` = `jine` + 20WHERE `id` IN (\". JOIN(\',\',$addTwityPointsAccount) .\")\";mysql_query($sql);$sql = \"UPDATE `数据库表`SET `jine` = `jine` + 10WHERE `id` IN (\". JOIN(\',\',$addTenPointsAccount) .\")\";mysql_query($sql);