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
相关产品推荐
相关产品推荐

