繁体   English   中英

两个foreach循环内的总数之和

[英]Sum total number inside two foreach loops

我有两个循环,一个循环调用代理,另一个循环调用一组日期。 dates循环位于agent循环内。 目的是计算每个单独代理的内部行数。 我得到的是总计总计,而不是我需要的每个代理商的总计。

$company = $_SESSION['user']['company']; $sth = $db->prepare("SELECT id, firstname, lastname, company FROM users WHERE company = '".$company."' AND level = 'user' AND status = 'Active'");
    $sth->execute();
    $agents = $sth->fetchAll(); 

    foreach($agents as $name){

    $begin = new DateTime($date1);
    $end = new DateTime($date2);

    $daterange = new DatePeriod($begin, new DateInterval('P1D'), $end);                         

    foreach($daterange as $date){

        $salesdates = $date->format("Y-m-d");

        $query = "SELECT unid FROM ".$company."_automated_responses WHERE title = 'Sale' AND date LIKE '".$salesdates."%' AND agent_id = '".$name['id']."'";
        $stmt = $db->prepare( $query );
        $stmt->execute();

        $salescount = $stmt->rowCount();

        if($salescount < 10){ $bonus = 0; }
        else if($salescount < 12){ $bonus = 25; }
        else if($salescount < 14){ $bonus = 40; }
        else if($salescount < 16){ $bonus = 50; }
        else if($salescount < 18){ $bonus = 70; }
        else if($salescount < 20){ $bonus = 85; }
        else if($salescount > 19){ $bonus = 100; }                              

        $total_bonus += $bonus;
        $total_salescount += $salescount;


    }

    echo $total_salescount.' - '.$name['firstname'].' '.$name['lastname'].' - '.$total_bonus.'<br />';

}

这是输出:

125-代理商1-115

245-代理商2-180

387-代理3-400

517-代理商4-540

它应该是这样的:

125-代理商1-115

120-代理2-75

142-代理人3-220

130-代理4-140

您需要设置$ total_salescount = 0; 在第一个循环中。 这样,当它进入第二个循环时,它将以0开始计数,而不是继续添加已经存在的内容。

我想您忘记了在foreach($agents as $name)循环开始时将$total_bonus$total_salescount重置为零。 没有重置,这些值将在$name不同值之间不断增长。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM