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

PHP函数中访问Object/Array数据触发TypeError报错求助

问题分析与修复方案

错误根源

Cannot access offset of type string on string这个错误直接说明:你在server.php第21行尝试用['property']访问的变量,实际是字符串类型,而非你预期的数组或对象。大概率是JSON数据未正确解析,或者数据源返回的是纯文本而非结构化数据。

具体修复步骤

  • 先确认变量实际类型
    在第21行前加调试代码,搞清楚变量到底是什么:

    // 替换$target_var为你要访问的变量名
    var_dump($target_var);
    exit;
    

    如果输出显示是string(比如一段JSON格式的文本),那就需要先解码。

  • 正确解析JSON数据
    如果变量是JSON字符串,用json_decode转成数组(推荐用关联数组,避免对象访问的问题):

    // 第二个参数传true,解析为关联数组
    $parsed_data = json_decode($your_json_string, true);
    // 检查解码是否成功,避免无效JSON导致的后续错误
    if (json_last_error() !== JSON_ERROR_NONE) {
        die('JSON解析失败:' . json_last_error_msg());
    }
    // 之后用$parsed_data['property']访问即可
    
  • 对齐前后端数据格式
    前端AJAX要明确指定接收JSON:

    $('#test').ajax({
        url: 'libs/php/server.php',
        method: 'GET',
        dataType: 'json', // 告诉jQuery自动解析JSON
        data: { code: 'BS' },
        success: function(res) {
            // 处理返回的结构化数据
        },
        error: function(xhr, err) {
            console.log('请求错误:', err);
        }
    });
    

    后端要输出标准JSON响应:

    // 先设置正确的响应头
    header('Content-Type: application/json');
    // 把要返回的数据转成JSON输出
    echo json_encode($country_borders_data);
    exit;
    
  • 检查数据源完整性
    确认getCountryBorders函数读取的数据源(比如文件、数据库)是否正常:如果是读取本地JSON文件,检查文件路径是否正确,文件内容是否是合法的JSON结构;如果是调用第三方接口,确认接口返回的是正确的JSON数据而非错误文本。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 04:55:13