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

解析PHP数组时遇Uncaught TypeError错误,请求排查帮助

解决PHP数组解析时的「Cannot access offset of type string on string」错误

错误原因

你的代码在数组层级遍历上犯了逻辑错误:

  • 当前foreach循环遍历的是外层数组(要么是仅包含[data]的最外层数组,要么是data节点下包含total/currentTotal/dataList的数组),而非真正需要遍历的dataList行数据数组。
  • 手动维护$rowCount索引的方式完全多余,当循环到非数组类型的元素(比如total对应的数值29)时,尝试对字符串/数值使用数组偏移访问,直接触发类型错误。

修正后的代码

情况1:传入的是最外层数组

function insertPriceGuide ($oArray){
    // 直接定位到存储行数据的dataList数组
    $dataList = $oArray['data']['dataList'];
    
    // 遍历每一行数据
    foreach($dataList as $row)
    {
        $imgURL = $row['Field1'];
        $kw = $row['Field2'];
        echo $imgURL.'<br/>';
        echo $kw.'<br/>';
    }
}

情况2:传入的是data节点下的数组

如果调用函数时传入的是$array['data'](而非最外层数组),则代码调整为:

function insertPriceGuide ($oArray){
    $dataList = $oArray['dataList'];
    
    foreach($dataList as $row)
    {
        $imgURL = $row['Field1'];
        $kw = $row['Field2'];
        echo $imgURL.'<br/>';
        echo $kw.'<br/>';
    }
}

代码说明

  1. 直接定位到dataList数组,这才是存储所有目标行数据的层级,避免遍历无关的数组元素。
  2. 使用foreach直接遍历dataList的每一行,每次循环的$row就是完整的行数据数组,直接访问字段即可,无需手动维护索引。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 01:21:07