如何将PHP数组分配给JS数组?

时间:2011-11-08 12:34:17

标签: php javascript

下面是我的代码,其中 php array $ keys 分配给 JS数组var keysArr , 但是警告框上显示的值不正确。

因此,将Php数组分配给Js数组会出现问题。

任何人都可以帮助我吗?提前谢谢!

<?php
$keys = array(1, 2, 3, 4);
?>
<html>
    <head>
    <script type="text/javascript">
        var keysArr = <?php print $keys?>;
        for (var i = 0; i < keysArr.length; ++i){

                    alert(keysArr[i]);

        }
    </script>
    </head>
    <body>
    </body>
</html>

4 个答案:

答案 0 :(得分:9)

var keysArr = <?php json_encode($keys) ?>;

需要PHP&gt; = 5.2.0,但旧版本可以使用第三方json_encode()实现。

答案 1 :(得分:1)

试试这个,它不需要JSON扩展:

var keysArr = [ <?php print implode(',', $keys); ?> ];
    for (var i = 0; i < keysArr.length; ++i){
        alert(keysArr[i]);
    }

答案 2 :(得分:1)

<?php
$keys = array(1, 2, 3, 4);
?>
<html>
    <head>
    <script type="text/javascript">
        var keysArr = Array(<?php foreach($keys as $key) echo (is_numeric($key))? $key : '"'.$key.'"' ;?>);
        for (var i = 0; i < keysArr.length; ++i){

                    alert(keysArr[i]);

        }
    </script>
    </head>
    <body>
    </body>
</html>

试试这个......我还没有测试过,但它会打印没有引号(“)的数字和其他东西。

答案 3 :(得分:0)

试试这个

<?php
$keys = array(1, 2, 3, 4);
?>
<html>
    <head>
    <script type="text/javascript">
        var keysArr = Array(<?php echo implode(',',$keys);?>);
        for (var i = 0; i < keysArr.length; ++i){

                    alert(keysArr[i]);

        }
    </script>
    </head>
    <body>
    </body>
</html>

打印你只是显示Array,而不是js的正确数组代码。查看您生成的HTML内部。