PHP多维数组转带键JavaScript数组遇运行异常求排查
PHP多维数组转JavaScript数组的正确方法
首先你写的PHP数组构建代码存在语法错误,多了一个闭合括号,修正后的代码应为:
foreach ($results as $row) { $template[] = array('Id'=>$row["Id"], 'Address'=>$row["Addr"], 'name'=>$row["name"]); }
你猜的没错,implode()确实无法直接处理多维数组。这个函数仅能拼接一维数组的元素,当传入多维数组时,每个子数组会被PHP强制转换为字符串"Array",最终生成的JS代码会变成["Array","Array",...],完全不符合JavaScript对象数组的语法规范,因此网页运行失败。
正确的做法是使用PHP的json_encode()函数,它可以直接将PHP多维数组转换成符合JavaScript语法的数组/对象结构,代码如下:
var theJSTemplateArray = <?php echo json_encode($template); ?>;
json_encode()会自动处理所有细节:转义字符串中的特殊字符、匹配PHP与JavaScript的数据类型、生成标准的JSON格式(与JS对象数组完全兼容),避免手动拼接字符串容易出现的各种语法错误。
内容的提问来源于stack exchange,提问作者Guy Thomas
相关产品推荐
相关产品推荐

