如何将PHP数组赋值给JS数组?

3
以下是我的代码,其中将php数组$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个回答

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

需要 PHP >= 5.2.0,但是也有适用于旧版本的第三方 json_encode() 实现。


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>

试试这个...我还没有测试过,但它会打印数字而不带引号("),其他东西则带有引号。


1
尝试一下这个,它不需要JSON扩展:
var keysArr = [ <?php print implode(',', $keys); ?> ];
    for (var i = 0; i < keysArr.length; ++i){
        alert(keysArr[i]);
    }

2
对于包含非数字数据的任何数组,这将会出现严重错误。 - Quentin

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>

使用print命令只会显示Array,而不是JS的正确数组代码。请检查您生成的HTML中的内容。


5
对于包含非数字数据或仅由一个值组成的数组,这将会出现严重错误。 - Quentin
是的,你说得对。它只适用于包含多个数字的数组。 - Kokers

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接