首页 > 解决方案 > 如何将 PHP 嵌套数组转换为 JQuery 数组

问题描述

我正在尝试将嵌套的 PHP 数组转换为 JQuery 数组,但它引发了错误。

这是一个 PHP 数组,即输出为 print_r

Array( 
[867] => Array ( [id] => 867 [title] => ATM [permalinks] => atm 
[parent_id] => 1 [status] => 0 [sort] => 2 [icon_class] => [image] => 
[page_strip_id] => 0 [meta_title] => [meta_keyword] => [meta_description] => 
[show_on_home] => 0 [tot_listing] => 0 ) 
[344] => Array ( [id] => 344 [title] => Grocery [permalinks] => grocery 
[parent_id] => 10 [status] => 0 [sort] => 0 [icon_class] => icofont icofont- 
gift [image] => [page_strip_id] => 0 [meta_title] => [meta_keyword] => 
[meta_description] => [show_on_home] => 0 [tot_listing] => 0 ))

jQuery代码

<script type="text/javascript">
    var child_cat_id=JSON.parse('<?php echo json_encode($child_cat_id);?>');
    console.log(child_cat_id);
</script>

在此处输入图像描述

在此处输入图像描述

我如何转换它并像 PHP 数组一样使用它

标签: javascriptphpjqueryarrays

解决方案


您的 JSON 可以有单引号,在 JSON 格式中不会转义,但会结束您在 JavaScript 中创建的字符串文字。此外,反斜杠不会有 JavaScript 字符串文字所需的额外转义。

更容易根本不解析 JSON 并假设 JSON 与 JavaScript 兼容,这是由 PHP 生成的(即,换行符没有问题,因为 PHP 默认会转义这些字符):

var child_cat_id=<?php echo json_encode($child_cat_id);?>;

还有一件事需要考虑:在编码过程中出现错误时json_encode将返回。false例如,当有非 UTF8 数据要编码时,您会得到该结果。echo在这种情况下将不输出任何内容,这将使上述解决方案无效的 JavaScript(即=;)。您可以通过多种方式在 JavaScript 中解决此问题,例如,如下所示:

var child_cat_id=["error", <?php echo json_encode($child_cat_id);?>].pop();

child_cat每当 PHP 无法将数据编码为 JSON 时,就会出现“错误” 。


推荐阅读