简体   繁体   中英

multidimensional array in view in codeigniter

I have the following array from my model, here the var_dump:

array(4) {
[0]=>
 array(1) {
   [0]=>
   array(5) {
 ["payment_student"]=>
 string(4) "2406"
 ["fee_month"]=>
 string(10) "2018-02-00"
 ["arrears"]=>
 string(1) "0"
 ["payment_description"]=>
 string(17) "Transport, 120 , "
 ["payment_amount"]=>
 string(3) "120"
   }
 }
 [1]=>
 array(1) {
   [0]=>
   array(5) {
     ["payment_student"]=>
 string(4) "2415"
 ["fee_month"]=>
 string(10) "2018-02-00"
 ["arrears"]=>
 string(1) "0"
 ["payment_description"]=>
 string(33) "Transport, 1500 , Tuition, 620 , "
 ["payment_amount"]=>
 string(4) "2120"
   }
     }
 [2]=>
     array(1) {
   [0]=>
   array(5) {
     ["payment_student"]=>
 string(4) "2175"
 ["fee_month"]=>
 string(10) "2018-02-00"
 ["arrears"]=>
 string(1) "0"
 ["payment_description"]=>
 string(17) "Transport, 620 , "
 ["payment_amount"]=>
 string(3) "620"
   }
 }
 [3]=>
 array(1) {
   [0]=>
   array(5) {
 ["payment_student"]=>
 string(4) "2087"
 ["fee_month"]=>
 string(10) "2018-02-00"
 ["arrears"]=>
 string(1) "0"
 ["payment_description"]=>
 string(33) "Transport, 1500 , Tuition, 420 , "
 ["payment_amount"]=>
 string(4) "1920"
   }
 }
}

here my view for loop:

$i=0;
foreach ($payments_view as $key => $data) { 

            ?>
                <td><?php echo $i; ?></td>
                <td><?php echo $data[$i]['payment_student']?></td>
                <td><?php echo $data[$i]['arrears']?></td>

                <td><?php echo $data[$i]['payment_description']; ?></td>
                <td><?php echo $data[$i]['payment_amount']+$data[$i]['arrears']; ?></td>
                <td></td>
                <td></td>
                <td></td>
            </tr>
            <?php
                $i++;
 } 

It display the 1st row, but for next rows give following error:

A PHP Error was encountered Severity: Notice Message: Undefined offset: 1 Filename: views/fee_register_list.php Line Number: 95 Backtrace: File: C:\\xampp\\htdocs\\learn_ci\\ksi_gentelella\\application\\views\\fee_register_list.php Line: 95 Function: _error_handler File: C:\\xampp\\htdocs\\learn_ci\\ksi_gentelella\\application\\controllers\\Fee_Controller.php Line: 173 Function: view File: C:\\xampp\\htdocs\\learn_ci\\ksi_gentelella\\index.php Line: 315 Function: require_once

How can I make my array simple one array so, can be able to use it. in such a shape I think its very complex.

Try this :

for($i=0;$i<count($data);$i++){
   <tr>
   $firstObj=$data[i][0];
    for($j=0;$j<5;$j++){
       <td><?php echo $i; ?></td>
       <td><?php echo $firstObj[$j]['payment_student']?></td>
       <td><?php echo $firstObj[$j]['arrears']?></td>
       <td><?php echo $firstObj[$j]['payment_description']; ?></td>
       <td><?php echo $firstObj[$j]['payment_amount']." ".$firstObj[$j]['arrears']; ?></td>
    }
   </tr>
}

You can use array_column to "flatten" your array:

<?php foreach (array_column($payments_view, 0) as $i => $data) { ?>
    <tr>
        <td><?= $i; ?></td>
        <td><?= $data['payment_student']?></td>
        <td><?= $data['arrears']?></td>
        <td><?= $data['payment_description']; ?></td>
        <td><?= $data['payment_amount'] + $data['arrears']; ?></td>
        <td></td>
        <td></td>
        <td></td>
    </tr>
<?php } ?>

Although it should not be done in view. Try to refactor your code, so your view would have data in proper format.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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