Есть ли другое решение для зацикливания моей функции в таблице foreach? - PullRequest
0 голосов
/ 04 апреля 2019

Я пытался зациклить свою переменную функцию внутри foreach в таблице.но когда я получаю большие данные, это вызывает медленную генерацию

, есть ли решение или идея для этого кода?Большое спасибо

На стороне сервера (контроллер)

$data['months'] = $this->db->get('nr_months')->result();
$data['data']   = $this->db->get('notes_receivable')->result();
$data['dataEachMos'] = function($d, $loan_ref){
   $result = $this->db->get_where('v_monthly_nr', array('due_date' => $d, 'ref_no' => $loan_ref))->row();
   return $result;
};
$this->load->view('tbl-view', $data);

На стороне клиента

-- in tbl-view page
<table>
  <thead>
    <tr>
      <th>Name</th>
      <th>Reference #</th>    
      <?php foreach($months as $row): ?>
      <th><?php echo date('F j, Y', strtotime($row->date)); ?></th>
      <?php endforeach;?>
    </tr>
  </thead>
  <tbody>
    <?php foreach($data as $row): ?>
      <tr>
        <td><?php echo strtoupper($row->name); ?></td>
        <td><?php echo $row->loan_ref; ?></td> 
        <?php foreach($months as $row): ?>
          <?php $nr_data = $dataEachMos($row->date, $row->loan_ref); ?>
          <th><?php echo number_format($nr_data->amount, 2); ?></th>
        <?php endforeach; ?>
      </tr>
    <?php endforeach;?>
  </tbody>
</table>

```


1 Ответ

0 голосов
/ 04 апреля 2019

Попробуйте это -

Вы должны изменить второй цикл foreach.

-- in tbl-view page
<table>
  <thead>
    <tr>
      <th>Name</th>
      <th>Reference #</th>    
      <?php foreach($months as $row): ?>
      <th><?php echo date('F j, Y', strtotime($row->date)); ?></th>
      <?php endforeach;?>
    </tr>
  </thead>
  <tbody>
    <?php foreach($data as $roww): ?>
      <tr>
        <td><?php echo strtoupper($roww->name); ?></td>
        <td><?php echo $roww->loan_ref; ?></td> 
        <?php foreach($months as $row): ?>
          <?php $nr_data = $dataEachMos($row->date, $row->loan_ref); ?>
          <th><?php echo number_format($nr_data->amount, 2); ?></th>
        <?php endforeach; ?>
      </tr>
    <?php endforeach;?>
  </tbody>
</table>

```

В контроллере

$months = $this->db->get('nr_months')->result();
$data   = $this->db->get('notes_receivable')->result();
$dataEachMos = function($d, $loan_ref){
   $result = $this->db->get_where('v_monthly_nr', array('due_date' => $d, 'ref_no' => $loan_ref))->row();
   return $result;
};
$this->load->view('tbl-view', $data);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...