HTML中如何处理PHP传递的三维数组

需求描述:
从 PHP 拿过来一组三维数组,现在想要通过 JQ/JS 获取里面数据。

  1. 如何在页面中正确获取 {$layer} 的数组(不需要显示)?
  2. JQ/JS 分别获取数据?

HTML

<volist name="layer" id="layer">
    <php> print_r($layer);</php>
</volist>

打印结果

Array(
    [id] => 2387
    [image] => /Public/upload/users/2018/06-01/5b10f39be1305.jpg
    [layername] => 
    [floorid] => 1
    [icon] => Array
        (
            [0] => Array
                (
                    [posx] => 0.2541
                    [posy] => 0.3444
                    [onegoodscategoryid] => 868
                    [portnum] => 0
                    [portid] => 
                    [image] => /Public/upload/category/2018/04-12/5acee8b14f930.png
                    [iconname] => IC
                    [name] => 室内摄像机
                )

            [1] => Array
                (
                    [posx] => 0.684
                    [posy] => 0.5306
                    [onegoodscategoryid] => 868
                    [portnum] => 0
                    [portid] => 
                    [image] => /Public/upload/category/2018/04-12/5acee8b14f930.png
                    [iconname] => IC
                    [name] => 室内摄像机
                )

        )
)
Array(
    [id] => 2388
    [image] => /Public/upload/users/2018/06-01/5b10f3d576921.jpg
    [layername] => 
    [floorid] => 2
    [icon] => Array
        (
            [0] => Array
                (
                    [posx] => 0.3859
                    [posy] => 0.474
                    [onegoodscategoryid] => 950
                    [portnum] => 0
                    [portid] => 
                    [image] => /Public/upload/category/2018/04-17/5ad565ce07a13.png
                    [iconname] => GS
                    [name] => 燃气感应器
                )
        )
)
阅读 2.8k
3 个回答
<script>
var layer = JSON.parse('{:json_encode($layer)}');
</script>

你好,开发者,嘿嘿~

首先你可能需要了解一下,php变量赋值给js变量,正常情况下,可以这样:

<?php 

    $str = "val";
 ?>

 <script type="text/javascript">
     var str = "<?php echo $str;?>";
 </script>

这样的话,是把一个简单的php变量赋给了js变量;如你问题提问的,如何把php数组赋值给js变量呢?他们两个语言中有一个相同的地方,就是同时可以操作json(因为语言不同,所以数组类型不能直接赋值),可以作如下改变:

<?php 
    $arr = [
        0 => [
            'name'      => 'xiaoming',
            'girlfrind' => ['xiaohong', 'xiaoli']
        ]
    ];

    // 将数组转换为json
    $json_arr = json_encode($arr);
 ?>

 <script type="text/javascript">
    // 此时json即为json类型
    var json = "<?php echo $json_arr?>";
    // 转换json类型变量为数组类型变量
    // 即 此时arr为js数组类型的变量
    var arr = JSON.parse( json );
 </script>

这样就可以用js/jq操作js数组了;

注意

  1. php变量赋值给js变量的时候,一定要加引号;如果不加引号,当php变量为空的时候,js会报一个致命错误;
  2. 赋值过程必须在.php文件类型下进行;如果是.js的文件类型,是不能执行php代码的,js不支持php语言,但是php文件却支持js语言;
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题