在两个foreach循环中合并xml结果

剪裁

我有一个从SoapClient获得的结果,该结果已转换为XML。因此,我有两个foreach循环,一个用于数据,另一个用于显示使用数据的代理。由于条目名称的类型不同(例如,SALE-GAS或SALE ELECTRIC),该日期表中每个代理商都有多个条目。我想要做的是结合计数和通话时间,因此这些结果中只有一位特工。

这是代码:

$xmlArray = xml2array($xml);
if( isset($xmlArray["data"]) 
&& isset($xmlArray["data"]["Report.Disposition.Summary3"]) 
&& isset($xmlArray["data"]["Report.Disposition.Summary3"]["row"]) )
{

$rows = $xmlArray["data"]["Report.Disposition.Summary3"]["row"];
if( count($rows) > 0 )
{
    foreach($rows as $row)
    {
        //$userDataArray = $row["@attributes"];         
        //var_export($userDataArray);                                           

        $UserId = $row["@attributes"]['UserId'];
        $Count = $row["@attributes"]['Count'];  
        $Code = $row["@attributes"]['Code'];
        $TalkDuration = $row["@attributes"]['TalkDuration'];    


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

        foreach($agents as $name){
            if(($Code == "1327 SALE - DUAL FUEL SWITCH") || ($Code == "1328 SALE - ELECTRICITY SWITCH") || ($Code == "1329 SALE - GAS SWITCH") || ($Code == "122 CLAIM STARTED BANK REFUNDS") || ($Code == "12202 CLAIM STARTED PBA")){ 
            echo '<tr>';
                echo '<td>'.$name['firstname'].' '.$name['lastname'].'</td>';
                echo '<td>'.$Count.'</td>';
                echo '<td>'.gmdate("H:i:s", $TalkDuration).'</td>';
            echo '</tr>';
            }
        }
    }
}
}

这是它产生的结果:

Gareth Wright 77 21:27:36

加雷斯·赖特17 04:11:23

加雷斯·赖特5 00:46:13

克洛伊·德尔加多(Chloe Delgado)82 20:42:26

克洛伊·德尔加多(Chloe Delgado)16 04:07:49

克洛伊·德尔加多(Chloe Delgado)3 00:43:58

索菲·贝里尔5:35:52

索菲·贝瑞尔1 00:19:38

汤姆·皮尔森84 00:56:40

汤姆·皮尔森15 04:10:46

汤姆·皮尔森3 01:03:23

肖恩·李93 03:00:09

肖恩·李12 03:10:12

肖恩·李2 00:00:00

阿拉诺

首先,您必须构建一个像这样的数组:

$arr = array(
    '0' => array(
        'firstname' => "Gareth",
        'lastname' => "Wright",
        'count' => 77,
        'talkDuration' => 'a date...'
    ),
    '1' => array(
        'firstname' => "Gareth",
        'lastname' => "Wright",
        'count' => 17,
        'talkDuration' => 'a other date...'
    ),
    '2' => array(
        '...' => '...'
    )
);

如何 ?像这样:

$arr = array();
foreach($rows as $row){
    //some process like getting $agent and $count, ...
    foreach($agents as $name){
        $arr[] = array(
            'firstname' => $name['firstname'],
            'lastname' => $name['lastname'],
            'count' => $count,
            'talkDuration' => $TalkDuration
        );
    }
}

因此,在两个foreach之后,运行以下命令:

$result = array();
foreach ($arr as $data) {
    $name = $data['firstname']."_".$data['lastname'];
    if (isset($result[$name])) {
        $result[$name]['count'] = $result[$name]['count']+$data['count'];
        $result[$name]['talkDuration'] = $result[$name]['talkDuration']+$data['talkDuration'];
    } else {
        $result[$name] = $data;
    }
}

输出:

print_r($result);
=================
Array
(
    [Gareth_Wright] => Array
    (
        [firstname] => Gareth
        [lastname] => Wright
        [count] => 94
        [talkDuration] => a date...
    )

    [...] => ...

)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在两个foreach循环中合并xml结果

来自分类Dev

Parallel.Foreach 在两个 foreach 循环中

来自分类Dev

如何在bash循环中合并两个范围?

来自分类Dev

在Perl foreach循环中分配两个变量

来自分类Dev

在具有两个期货的循环中使用CompletableFuture合并每个循环迭代

来自分类Dev

在foreach循环中减去两个数字并显示每个结果

来自分类Dev

如何在一个循环中组合/合并/交叉两个对象数组?

来自分类Dev

AWK在循环中合并两个不同的顺序文件集

来自分类Dev

for循环中的两个索引增量

来自分类Dev

在For循环中迭代两个范围

来自分类Dev

向量在两个循环中的相乘

来自分类Dev

循环中的两个变量的抽头

来自分类Dev

在嵌套循环中,两个不同的数据表获得相同的结果集并引发异常

来自分类Dev

如何将计算得出的结果存储在np数组的两个for循环中?

来自分类Dev

Powershell-从两个变量的ForEach循环中调用唯一值以执行PowerCLI命令

来自分类Dev

无法在两个PHP foreach循环中设置数组值

来自分类Dev

如何在一个foreach循环中检查两个数组?

来自分类Dev

如何在foreach循环中执行两个不同的php准备好的语句?

来自分类Dev

laravel刀片的foreach循环中两个不同的“ get”集合的条件

来自分类Dev

无法从Codeigniter中的foreach循环中的两个表中获取记录

来自分类Dev

如何在foreach循环中执行两个不同的php准备好的语句?

来自分类Dev

合并两个可变函数结果

来自分类Dev

Mongodb合并两个集合的结果

来自分类Dev

合并两个SQL选择的结果

来自分类Dev

水平合并两个查询结果

来自分类Dev

合并两个聚合的结果

来自分类Dev

如何合并两个列表foreach?

来自分类Dev

合并两个while循环

来自分类Dev

如何在MATLAB中使用两个计数器将每个循环的结果保存在for循环中

Related 相关文章

  1. 1

    在两个foreach循环中合并xml结果

  2. 2

    Parallel.Foreach 在两个 foreach 循环中

  3. 3

    如何在bash循环中合并两个范围?

  4. 4

    在Perl foreach循环中分配两个变量

  5. 5

    在具有两个期货的循环中使用CompletableFuture合并每个循环迭代

  6. 6

    在foreach循环中减去两个数字并显示每个结果

  7. 7

    如何在一个循环中组合/合并/交叉两个对象数组?

  8. 8

    AWK在循环中合并两个不同的顺序文件集

  9. 9

    for循环中的两个索引增量

  10. 10

    在For循环中迭代两个范围

  11. 11

    向量在两个循环中的相乘

  12. 12

    循环中的两个变量的抽头

  13. 13

    在嵌套循环中,两个不同的数据表获得相同的结果集并引发异常

  14. 14

    如何将计算得出的结果存储在np数组的两个for循环中?

  15. 15

    Powershell-从两个变量的ForEach循环中调用唯一值以执行PowerCLI命令

  16. 16

    无法在两个PHP foreach循环中设置数组值

  17. 17

    如何在一个foreach循环中检查两个数组?

  18. 18

    如何在foreach循环中执行两个不同的php准备好的语句?

  19. 19

    laravel刀片的foreach循环中两个不同的“ get”集合的条件

  20. 20

    无法从Codeigniter中的foreach循环中的两个表中获取记录

  21. 21

    如何在foreach循环中执行两个不同的php准备好的语句?

  22. 22

    合并两个可变函数结果

  23. 23

    Mongodb合并两个集合的结果

  24. 24

    合并两个SQL选择的结果

  25. 25

    水平合并两个查询结果

  26. 26

    合并两个聚合的结果

  27. 27

    如何合并两个列表foreach?

  28. 28

    合并两个while循环

  29. 29

    如何在MATLAB中使用两个计数器将每个循环的结果保存在for循环中

热门标签

归档