报错Cannot access offset of type string on string的原因排查
问题排查:Cannot access offset of type string on string 报错
报错发生在以下代码行:
<img class="card-img-top" src="<?php echo base_url('uploads/products_images/'.$row['prod_image'] ); ?>" alt="">
错误核心原因
$row是字符串类型,但你用了数组的访问方式($row['prod_image']),PHP不允许对字符串使用数组偏移语法,因此抛出该错误。
可能的问题点及解决办法
控制器传递的
$products格式错误
检查控制器中查询产品的代码,确保返回的是二维关联数组(每个元素对应一个产品的数组)。比如在CodeIgniter中,要使用$this->db->get()->result_array(),而不是row_array()(返回单条记录数组)或其他返回字符串的方法。$products中存在非数组元素
在循环内增加类型校验,跳过非数组的无效元素:foreach($products as $row){ if(!is_array($row)) continue; // 原有产品卡片代码 }空值判断逻辑不严谨
原代码的!empty($products)无法区分数组和非数组的非空值,修改判断条件确保$products是数组且非空:if(is_array($products) && !empty($products)){ foreach($products as $row){ // 原有代码 } }
调试建议
在循环前添加调试代码,查看$products的实际结构:
var_dump($products); die;
通过打印结果可以直接确认$products的类型和内容,快速定位问题根源。
内容的提问来源于stack exchange,提问作者Ivanoh mwaniki
相关产品推荐
相关产品推荐

