php中一行显示show array的问题

时间:2014-03-21 20:01:07

标签: php arrays multidimensional-array

enter image description here

我希望每行显示一个代理,包含所有约会,回拨等...

我试图在for循环中输入for循环。但是,它没有给我正确的结果。

CODE:

foreach($agents_summary as $as){
<tr>
  <td><?=$as['index']?></td>
  ... etc...
</tr>

ARRAY SAMPLE:

Array
(
[0] => Array
    (
        [agent_id] => 1
        [first_name] => Ronak
        [last_name] => Patel
        [transaction_type] => APPOINTMENT
        [transaction_count] => 5
    )

[1] => Array
    (
        [agent_id] => 1
        [first_name] => Ronak
        [last_name] => Patel
        [transaction_type] => CALL_BACK
        [transaction_count] => 5
    )
 .....
 AND SO ON...

编辑: 数据库查询:

SELECT
a.id AS agent_id,
a.first_name AS first_name,
a.last_name AS last_name,
ct.transaction_type AS transaction_type,
count(*) AS transaction_count
FROM agent AS a
INNER JOIN client_transaction AS ct
ON a.id=ct.generated_by_id
WHERE ct.transaction_type = 'APPOINTMENT'
OR ct.transaction_type = 'CALL_BACK'
OR ct.transaction_type = 'SENT_EMAIL'
OR ct.transaction_type = 'SALE'
GROUP BY agent_id, transaction_type
ORDER BY `agent_id` ASC, `transaction_type` ASC

1 个答案:

答案 0 :(得分:1)

SQL请求结束时

GROUP BY agent_id

编辑: 将有一个带有for循环的PHP解决方案,它将根据唯一的agent_id合并不同的值:

$agents = array();
foreach($agents_summary as $as){
    $agents[$as['agent_id']]['first_name'] = $as['first_name'];
    $agents[$as['agent_id']]['last_name'] = $as['last_name'];
    if(empty($agents[$as['agent_id']][$as['transaction_type']])){
        $agents[$as['agent_id']][$as['transaction_type']] = $as['transaction_count'];
    }
    else{
        $agents[$as['agent_id']][$as['transaction_type']] += $as['transaction_count'];
    }
}

foreach($agents as $agentID => $agent){
    <tr>
      <td><?=$agentID?></td>
      <td><?=$agent['first_name']?></td>
      <td><?=$agent['APPOINTMENT']?></td>
      ... etc...
    </tr>
}