首页 > 解决方案 > For循环问题在Codeigniter 4中迭代一次

问题描述

我想知道我的代码如何迭代一次。它应该进行 5 次迭代。但是当我删除return $result时,它在为 foreach() 提供的View Invalid 参数中显示错误。我一直在尝试通过在Model中添加输出代码并删除View中的所有代码。最后它显示了我想要的 5 次迭代。但是,如何在视图中显示结果?

我的模特

public function getAllItem()
    {
        for($i=1; $i<=5; $i++){
            for($j=$i+1; $j<=5; $j++){
                $builder = $this->db->table('rating')
                            ->select('user.idUser, user.nmUser, rating.idBengkel,
                                    MAX( if(rating.idBengkel = '.$i.' , rating.nilai, 0 )) itemX,
                                    MAX( if(rating.idBengkel = '.$j.' , rating.nilai, 0 )) itemY')
                            ->join('user','user.idUser = rating.idUser', 'left')
                            ->where('rating.idBengkel', $i)
                            ->orWhere('rating.idBengkel', $j)
                            ->groupBy('rating.idUser');
                //var_dump($builder);
                
                $query = $builder->get();
                $result = $query->getResult();

                return $result;
}

我的控制器

public function pcc_method()
    { 
        $model = new Admin_model();
        $data['all'] = $model->getAllItem();

        echo view('templates/header', $data);
        echo view('pcc_method',$data);
        echo view('templates/footer');
    }

我的观点

<table class="table table-bordered">
        <thead class="thead-dark">
          <tr>
            <th scope="col">idUser</th>
            <th scope="col">nmUser</th>
            <th scope="col">itemX</th>
            <th scope="col">itemY</th>
          </tr>
        </thead>
        <tbody>
          <!-- Looping select db from Admin.php --> 

          <?php foreach($all as $row):?>
            <tr>
              <td><?= $row->idUser;?></td>
              <td><?= $row->nmUser;?></td>
              <td class="text-center col-sm-3"><?= $row->itemX;?></td>
              <td class="text-center col-sm-3"><?= $row->itemY;?></td>
            </tr>
          <?php endforeach;?>
        </tbody>
      </table>

请给我这个问题的解决方案。问候!

标签: codeigniterfor-loopreturnnested-loopscodeigniter-4

解决方案


这与codeigniter无关。它与原生PHP有关。

return停止整个方法的执行,并将指示执行此操作的任何数据返回给调用您的方法的任何函数或方法。

如果您需要循环运行 5 次并返回 5 次迭代的输出,则需要将数据存储在辅助变量中,然后在 for 循环停止后返回该变量。

这里有很多选择。最简单的方法是在第一个循环开始()之前创建一个新的 arrayObject $temp = new ArrayObject();,然后替换:

return $result

为了:

$temp->append($result);

这会将每次迭代的输出存储在 temp 对象中。

然后,在两个循环之外:

return $temp;

模型会将整个输出返回给控制器


推荐阅读