Message: Invalid argument supplied for foreach() while using foreach

42 Views Asked by At

I got a problem when using foreach, the error can be seen below along with the code

A PHP Error was encountered everity: Warning

Message: Invalid argument supplied for foreach()

this is the code:

<tbody>
                            <?php
                                $no = 1;                                                
                                $marketSize = 0;
                                $pmarketShare = 0;
                                $cmarketShare = 0;
                                $rprevenue = 0;
                                $prevenue = 0;
                                $crevenue =0;
                                    
                                if($value['data']->num_rows() > 0): 
                                foreach ($value['data']->result() as $row):
                                    $marketSize += $row->total_size;
                                    $pmarketShare += $row->avg_share;
                                    $cmarketShare += $row->sum_share;
                                    $rprevenue =0;
                                    $prevenue =0;
                                    $crevenue =0;
                            ?>  
                            <?php endforeach; endif;?>
                        
                            <?php
                            foreach ($data as $row) :  ?>
                            <?php endforeach;?>
                                <tr>                               
                                    <td width="10px"><?= $no++ ?></td>
                                    <td>
                                        <a data-market="<?= $row->kota; ?>" data-tahun="<?= $filter['yearstart']; ?>">
                                            <?= $row->kota; ?>
                                        </a>
                                    </td>
                                    <td class="text-right">
                                        <a data-market="<?= $row->total_size; ?>" data-tahun="<?= $filter['yearstart']; ?>">
                                            <?= number_format($row->total_size, 2, ',', '.') ?>
                                        </a>
                                    </td>
                                    <td class="text-right">
                                        <a data-market="<?= $row->avg_share; ?>" data-tahun="<?= $filter['yearstart']; ?>">
                                            <?= number_format($row->avg_share, 2, ',', '.'). "%" ?>
                                        </a>
                                    </td>
                                    <td class="text-right">
                                        <a data-market="<?= $row->sum_share; ?>" data-tahun="<?= $filter['yearstart']; ?>">
                                            <?= number_format($row->sum_share, 2, ',', '.') ?>
                                        </a>
                                    </td>
                                    <td class="text-right">
                                        <a data-market="0" data-tahun="<?= $filter['yearstart']; ?>">
                                            <?= number_format($rprevenue, 2, ',', '.') ?>
                                        </a>
                                    </td>
                                    <td class="text-right">
                                        <a data-market="0" data-tahun="<?= $filter['yearstart']; ?>">
                                            <?= number_format($prevenue, 2, ',', '.') ?>
                                        </a>
                                    </td>
                                    <td class="text-right">
                                        <a data-market="0" data-tahun="<?= $filter['yearstart']; ?>">
                                            <?= number_format($crevenue, 2, ',', '.') ?>
                                        </a>
                                    </td>
                                </tr>
                        </tbody>

I try to make the table but it only show 1 column because that error

1

There are 1 best solutions below

0
ichadhr On BEST ANSWER

you to early closed the loop.

<?php foreach ($data as $row) :  ?>
        <?php endforeach; ?>

try change like below

<?php
    $no = 1;
    $marketSize = 0;
    $pmarketShare = 0;
    $cmarketShare = 0;
    $rprevenue = 0;
    $prevenue = 0;
    $crevenue = 0;
?>
    <?php if($value['data']->num_rows() > 0)  : ?>
        <?php foreach ($value['data']->result() as $row) : ?>
            <?php $marketSize += $row->total_size;
                  $pmarketShare += $row->avg_share;
                  $cmarketShare += $row->sum_share;
                  $rprevenue = 0;
                  $prevenue = 0;
                  $crevenue = 0;
            ?>  
        <?php endforeach; ?>
    <?php endif; ?>
    
    <?php foreach ($data as $row) :  ?>
        <tr>                               
            <td width="10px"><?php $no++ ?></td>
            <td>
                <a data-market="<?php $row->kota; ?>" data-tahun="<?php $filter['yearstart']; ?>">
                    <?php $row->kota; ?>
                </a>
            </td>
            <td class="text-right">
                <a data-market="<?php $row->total_size; ?>" data-tahun="<?php $filter['yearstart']; ?>">
                    <?php number_format($row->total_size, 2, ',', '.'); ?>
                </a>
            </td>
            <td class="text-right">
                <a data-market="<?php $row->avg_share; ?>" data-tahun="<?php $filter['yearstart']; ?>">
                    <?php number_format($row->avg_share, 2, ',', '.') . "%"; ?>
                </a>
            </td>
            <td class="text-right">
                <a data-market="<?php $row->sum_share; ?>" data-tahun="<?php $filter['yearstart']; ?>">
                    <?php number_format($row->sum_share, 2, ',', '.'); ?>
                </a>
            </td>
            <td class="text-right">
                <a data-market="0" data-tahun="<?php $filter['yearstart']; ?>">
                    <?php number_format($rprevenue, 2, ',', '.'); ?>
                </a>
            </td>
            <td class="text-right">
                <a data-market="0" data-tahun="<?php $filter['yearstart']; ?>">
                    <?php number_format($prevenue, 2, ',', '.'); ?>
                </a>
            </td>
            <td class="text-right">
                <a data-market="0" data-tahun="<?php $filter['yearstart']; ?>">
                    <?php number_format($crevenue, 2, ',', '.'); ?>
                </a>
            </td>
        </tr>
    <?php endforeach; ?>
    </tbody>