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

PHP带数据库ID索引的多维数组转JSON后,JS能否用点语法访问?

如何在JavaScript中以users.workgroupId.userId.firstname形式访问PHP多维数组转来的数据

首先得帮你修正下PHP代码里的语法错误——你写的数组缺了几个逗号,还有多余的分号,这会导致PHP运行报错,修正后的代码如下:

$users = array(
    2 => array(
        5 => array(
            'firstname' => 'John',
            'lastname' => 'Newman'
        ),
        7 => array(
            'firstname' => 'Peter',
            'lastname' => 'Dow'
        )
    ),
    12 => array(
        15 => array(
            'firstname' => 'George',
            'lastname' => 'Bush'
        ),
        30 => array(
            'firstname' => 'Ronald',
            'lastname' => 'Reagan'
        )
    )
);
echo json_encode($users);

这段代码输出的JSON结构是这样的:

{
  "2": {
    "5": {"firstname":"John","lastname":"Newman"},
    "7": {"firstname":"Peter","lastname":"Dow"}
  },
  "12": {
    "15": {"firstname":"George","lastname":"Bush"},
    "30": {"firstname":"Ronald","lastname":"Reagan"}
  }
}

回到你的问题:完全可以在JavaScript中实现类似users.workgroupId.userId.firstname的访问逻辑,只是需要注意数字属性名的语法细节:

1. 当你知道具体的工作组ID和用户ID时

JavaScript的对象属性名如果是纯数字,直接用点语法会报错(因为标识符不能以数字开头),所以得用方括号语法:

// 正确访问John的firstname
console.log(users['2']['5'].firstname); // 输出 "John"

别尝试写users.2.5.firstname,这会触发语法错误,方括号是数字键的标准访问方式。

2. 当你用变量存储工作组ID和用户ID时

这种情况是最常见的场景,直接用方括号包裹变量就能实现你想要的“动态访问”效果,逻辑上和你设想的users.workgroupId.userId.firstname完全一致:

const workgroupId = 2;
const userId = 5;
console.log(users[workgroupId][userId].firstname); // 输出 "John"

JavaScript会自动把数值类型的变量转换成字符串属性名,和JSON里的键完美匹配,完全不用额外处理。

简单来说,你的需求是可行的,只是数字键和变量键需要用方括号替代点语法,其他逻辑和你预期的一样顺畅。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:23:42