将二维php数组转换为JavaScript

时间:2013-08-25 17:27:02

标签: php javascript arrays json

我有一个二维php数组,$ phpar,其中两个维度都被索引(0,1,2,...),所有值都是纯文本。在JavaScript函数中,我想将此数组转换为二维JavaScript数组。我知道以下代码不起作用,但它说明了我想要做的事情。

jsfunction() {
    var jsarray = new Array();
    jsarray = <?php json_encode($phpar); ?>;
}

如果返回的值不是常规的js数组,就像JSON字符串一样,我需要一些帮助将其解析为我想要的内容。

2 个答案:

答案 0 :(得分:1)

我不确定你的问题在哪里......但json_encode的基本操作看起来像:

<script type="text/javascript">

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

</script>

坦率地说,我不明白为什么其他人建议将兼容javascript的对象/数组投入字符串,更糟糕的是他们这样做的方式是错误。如果你想要一个JSON对象字符串,这是正确的方法:

<script type="text/javascript">

    var jsarray_string = <?php echo json_encode(json_encode($phpar)); ?>;
    //                                   ^           ^------ php array to js array
    //                                   '------------------ php string to js string
</script>

顺便说一句,可以像数组一样访问javascript对象。例如:

var myArray = {1: 'hi', 2: 'bye'};
alert(myArray[2]); // this works!

唯一的区别是myArray实际上不是一个javascript数组,例如,myArray.constructor不是Array()

答案 1 :(得分:0)

在应用程序的功能方面,您实际上在这里尝试了什么?

PHP是一种后端语言,JavaScript是一种前端语言。如果您需要前端从后端检索对象以在JavaScript中使用,则应使用Ajax而不是将PHP代码放入JavaScript中。

您的Ajax方法将使用MVC样式的URL('/ mycontroller / mymethod')调用相关的PHP方法。 PHP方法应该使用关联数组,因为JSON对象是键值对。你应该在返回之前对数组进行json_encode。

以下是一些示例PHP代码:

<?php #foo.php

public function bar() {
    $array = ('first-name' => 'John', 'last-name' => 'Doe');
    return json_encode($array);
}

在前端,您的JSON对象将包含与关联数组相同的键值对:

var getBar = function() {
    $.get('/foo/bar', function(data) {
        var string = 'My name is ' + data.first-name + ' ' + data.last-name';
        alert(string);
    }, json);
};