现在公司需要对项目报表进行处理
比如这个月一共50个项目花费了1000万,给出了每个项目的花费(我处理下Excel做成这个数据表字段对应:项目ID,项目花费)然后又给出180个员工这个月的花费,这180个人花费的总和是1000万。(数据表如下:字段对应月份, 人员这个月花费  , 人员id)
现在需要做的是:比如这个月每个人需要上班160个小时,怎么得出每个人在每个项目中花费多少工时

解决方案 »

  1.   

    自己今天整理了思路,写出来了
    function EmployPro($pro,$emp,$p,$e,$num){
    $pro_num = count($pro); //项目数
    $emp_num = count($emp); //员工数
    if(empty($pro) || empty($emp)){exit;} //数据为空,则结束
    $p_amount =$pro[$p]['pro_amount'] ; //项目花费
    $e_amount =$emp[$e]['hourly_staff_money'] ; //员工花费
    if($p_amount > $e_amount){
    echo $emp[$e]['user_id'].'在'.$pro[$p]['pro_id'].'上花费'.$e_amount.'<br>';
    $p_amount -= $e_amount;
    $pro['0']['pro_amount'] = round($p_amount,2);
    $emp = array_slice($emp,1,$emp_num-1);
    $num++;
    self::EmployPro($pro,$emp,$p,$e,$num);
    }
    elseif($p_amount < $e_amount){
    echo $emp[$e]['user_id'].'在'.$pro[$p]['pro_id'].'上花费'.$p_amount.'<br>';
    $e_amount -= $p_amount;
    $emp['0']['hourly_staff_money'] = round($e_amount,2);
    $pro = array_slice($pro,1,$pro_num-1);
    $num++;
    self::EmployPro($pro,$emp,$p,$e,$num);
    }
    elseif($p_amount = $e_amount){
    echo $emp[$e]['user_id'].'在'.$pro[$p]['pro_id'].'上花费'.$p_amount.'<br>';
    $pro = array_slice($pro,1,$pro_num-1);
    $emp = array_slice($emp,1,$emp_num-1);
    $num++;
    self::EmployPro($pro,$emp,$p,$e,$num);
    }
    }