如何正确获取从PHP传递到JavaScript的数组的特定索引值
问题原因
- 你的PHP变量
$heretimePh1是自行拼接的不规范字符串,既不是合法数组结构,也不符合JSON格式要求:缺失外层数组方括号、对象键rate无双引号包裹、末尾存在多余逗号。 - JS取值逻辑顺序错误:如果是数组包裹的对象集合,需要先取数组下标定位到对应对象,再读取对象的
rate属性,你写的a['rate']再取[0]的逻辑完全颠倒。
最优修复方案(修改PHP生成逻辑)
不要手动拼接数据字符串,用PHP内置的json_encode生成合法JSON格式,避免格式错误:
// 定义结构化数组 $heretimeArr = [ ['rate' => 958.741566], ['rate' => 958.741566], ['rate' => 958.741566], ['rate' => 958.741566], ['rate' => 7669.932528], ['rate' => 7669.932528], ['rate' => 7669.932528], ['rate' => 7669.932528], ['rate' => 5000], ['rate' => 7669.932528], ['rate' => 7669.932528], ['rate' => 7669.932528], ['rate' => 7669.932528], ['rate' => 7669.932528], ['rate' => 7669.932528], ['rate' => 7669.932528], ['rate' => 7669.932528], ['rate' => 7465.172304] ]; // 转换为标准JSON字符串 $heretimePh1 = json_encode($heretimeArr);
对应JS代码调整为:
var a = <?php echo $heretimePh1; ?>; // 先取数组第0项,再读取rate属性 var targetRate = a[0].rate;
此时targetRate就是你要的第一个958.741566值。
临时兼容方案(不修改PHP变量,前端补全格式)
如果无法修改PHP侧的变量生成逻辑,可以在前端手动修复格式后使用:
// 先将PHP输出的内容作为字符串接收 var rawStr = '<?php echo $heretimePh1; ?>'; // 补全数组结构、去除末尾多余逗号、给rate键加双引号 var formatStr = '[' + rawStr.replace(/,\s*$/, '').replace(/rate:/g, '"rate":') + ']'; // 转换为JS数组 var rateList = JSON.parse(formatStr); var targetRate = rateList[0].rate;
内容的提问来源于stack exchange,提问作者Josh
相关产品推荐
相关产品推荐

