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

CodeIgniter中如何访问视图中传递的对象数组数据?

这个问题我太熟了——CodeIgniter默认返回的查询结果是stdClass对象数组,不是你以为的关联数组,所以用数组下标$game['gameID']访问肯定会报错!给你两种最常用的解决方案,挑适合你的就行:

方案1:直接用对象属性语法访问(最快最直接)

不用改任何模型代码,直接在视图里把数组访问的语法改成对象属性访问的->符号就行。比如:

<?php foreach ($games as $game): ?>
    <div class="game-item">
        赛事ID:<?= $game->gameID ?>
        比赛时间:<?= $game->match_time ?>
        <!-- 其他字段同理,注意属性名要和数据库字段完全一致,大小写敏感! -->
    </div>
<?php endforeach; ?>

这里要注意:属性名就是你数据库表match_schedule里的字段名,比如字段是game_id就写$game->game_id,字段是gameID就写$game->gameID,别写错大小写。

方案2:修改模型,返回关联数组(适合习惯用数组的情况)

如果你就是习惯用数组下标访问,那可以在模型的getUpcomingGames()方法里,把查询结果的返回方式从默认的result()改成result_array(),这样返回的就是关联数组了:

public function getUpcomingGames() {
    // 假设你原来的查询逻辑是这样的
    $this->db->where('match_time >', date('Y-m-d H:i:s')); // 示例:只查未开始的赛事
    $query = $this->db->get('match_schedule');
    
    // 把 result() 换成 result_array(),返回关联数组
    return $query->result_array();
}

改完之后,你原来视图里的$game['gameID']写法就完全能用了,不用改视图代码。

临时应急小技巧(不推荐长期用)

如果有时候你不确定返回的是对象还是数组,或者临时需要转成数组,可以在遍历的时候强制类型转换:

foreach ($games as $game) {
    $game_arr = (array)$game;
    echo $game_arr['gameID'];
}

不过这个只是临时救急,还是前面两种方案更规范。

内容的提问来源于stack exchange,提问作者Tim C

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:19:54