Как перебирать данные и отображать их в соответствии с именем группы в php - PullRequest
0 голосов
/ 04 июля 2018

Я выбираю данные из базы данных и отображаю в таблице, но теперь я хочу отобразить все данные в соответствии с их именем агента и суммой баланса их агента, который связан с другой таблицей.

Customer Table

    id agent_id
    1    5
    2    5
    3    6

    Balance table

    id agent_id bal_amt
    1    5       25000
    2    6       7000

Но я хочу отобразить, как показано ниже, означает, что я хочу отобразить имя агента в строке и остальные данные, связанные с именем агента в столбцах

Ожидаемый результат

Agentname  category  subcategory  balance
ABC                               25000
            Ring     plastic
            Node     fibre
            test     rassi
XYZ                              7000
            sofa     rod
            mate     code

Ниже мой код

     <?php  
                            $finalArray = [];
                            foreach ($customerlist as $user) { print_r($user);exit;
                                $finalArray[$user['agent']['name']][] = $user;
                            }
                            foreach ($finalArray as $key => $value) {
                        ?>

    <tr>
                            <td colspan="7"><?php echo $key; ?></td>
                            <td colspan="2">25000</td>
                        </tr> 
                        <?php foreach ($value as $user) { ?>
                         <tr>
                        <td>&nbsp;</td> 
                        <td><?php echo $user['product']['name'];  ?></td>
<?php }} ?>

1 Ответ

0 голосов
/ 04 июля 2018

Для этого необходимо сначала сгруппировать все записи для агентов в один массив, а затем просмотреть их, чтобы получить желаемый результат. Попробуйте этот код:

<?php
$finalArray = [];
foreach ($customerlist as $user) {
    $finalArray[$user['agent']['name']][] = $user;
}

foreach ($finalArray as $key => $value) {
    ?>
    <tr>
        <td><?php echo $key; ?></td> 
        <td>&nbsp;</td>
        <td>&nbsp;</td>
    </tr>  
    <?php foreach ($value as $user) { ?>
        <tr>
            <td>&nbsp;</td> 
            <td><?php echo $user['product']['name']; ?></td>
            <td><?php echo $user['subproduct']['name']; ?></td>
        </tr>  
        <?php
    }
}
?>

Здесь сначала tr будет напечатано Agent Name, а другие tr во внутреннем цикле foreach будут печатать записи этого агента.

...