解析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/>'; } }
代码说明
- 直接定位到
dataList数组,这才是存储所有目标行数据的层级,避免遍历无关的数组元素。 - 使用
foreach直接遍历dataList的每一行,每次循环的$row就是完整的行数据数组,直接访问字段即可,无需手动维护索引。
内容的提问来源于stack exchange,提问作者Vee
相关产品推荐
相关产品推荐

