You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CodeIgniter控制器中如何填充包含所有结果的映射数组?

解决CodeIgniter控制器向视图传递多组查询结果的问题

这问题太常见啦——你当前的循环每次都会用新的查询结果直接覆盖$moviesbyid['similarmovie'],所以最后只会保留最后一个$value对应的电影数据。要把所有$value的查询结果都存进去,只需要把这个变量改成数组容器,每次循环把新结果追加进去就行,给你两种常用方案:

方案1:保存为多维数组(区分每个$value的结果)

如果需要在视图里区分不同$value对应的电影组,可以把结果存成多维数组:

// 先初始化数组,避免未定义警告
$moviesbyid['similarmovie'] = [];

foreach ($gen as $value) {
    // 用[]语法将每次的查询结果追加到数组末尾
    $moviesbyid['similarmovie'][] = $this->main_model->getsimilarmovies($value);
}

$this->load->view('home/check.php', $moviesbyid);

在视图home/check.php里可以这样遍历:

<?php foreach ($similarmovie as $genreMovieGroup): ?>
    <div class="movie-group">
        <!-- 这里可以根据需要显示分类相关内容 -->
        <?php foreach ($genreMovieGroup as $movie): ?>
            <p><?php echo $movie->Title; ?></p> <!-- 替换成你表中的实际字段名 -->
        <?php endforeach; ?>
    </div>
<?php endforeach; ?>

方案2:合并为一维数组(不区分$value,所有电影放一起)

如果不需要区分不同$value的结果,只想把所有电影合并成一个数组,可以用array_merge:

$moviesbyid['similarmovie'] = [];

foreach ($gen as $value) {
    $currentMovies = $this->main_model->getsimilarmovies($value);
    // 将当前查询结果合并到总数组中
    $moviesbyid['similarmovie'] = array_merge($moviesbyid['similarmovie'], $currentMovies);
}

$this->load->view('home/check.php', $moviesbyid);

视图里直接遍历所有电影即可:

<?php foreach ($similarmovie as $movie): ?>
    <p><?php echo $movie->Title; ?></p>
<?php endforeach; ?>

另外补充个小建议:如果$gen数组可能为空,初始化数组的步骤能避免视图里出现“未定义变量”的警告,养成好习惯哦~

内容的提问来源于stack exchange,提问作者Gulzar Ali

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 08:38:46