将二维php数组转换为JavaScript

将二维php数组转换为JavaScript,php,javascript,arrays,json,Php,Javascript,Arrays,Json,我有一个二维php数组,$phpar,其中两个维度都被索引(0,1,2,…),所有值都是纯文本。在JavaScript函数中,我想将此数组转换为二维JavaScript数组。我知道下面的代码不起作用,但它说明了我想做什么 jsfunction() { var jsarray = new Array(); jsarray = <?php json_encode($phpar); ?>; } jsfunction(){ var jsarray=新数组(); jsarra

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

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

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

我不确定问题出在哪里……但是
JSON\u encode
的基本操作看起来很简单:

<script type="text/javascript">

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

</script>

唯一的区别是myArray不是一个真正的javascript数组,例如,
myArray.constructor
不是
array()

就应用程序的功能而言,您在这里实际要实现什么

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

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

下面是一些PHP代码示例:

<?php #foo.php

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

假设
$phpar
确实包含一个二维数组,那么您所做的工作应该可以正常工作。(除了根本不需要
=new Array()
部分之外,您只需要创建一个数组,以便在下一行中丢弃它)。因此,如果这不起作用,您要做的是查看浏览器接收到的内容,并更新PHP变量,使其真正包含二维数组。请注意,这里可能存在一个安全问题:当$phpar依赖于用户输入时,它可能包含带标记的字符串,接着是恶意的东西被注入到你的网页中。继续:在JSON编码中添加选项JSON“U HEX”JSON“U HEX”标记JSON“U HEX”和JSON“U HEX”APOS可以防止这一漏洞和其他一些漏洞,但我不敢说这可以防止所有可能的攻击。最好不要直接在JS脚本中插入动态内容。@T.J.Crowder也许我今天太累了,不想再这样了,但是你能解释一下为什么大家都在谈论
JSON.parse
?是我遗漏了什么,还是纯粹是废话?我只是想确定我不是唯一一个这样做的人。O。o@AardvarkSoup这就是为什么你要对这些东西进行编码!!明白了,我现在和你在一起。这是评论,不是回答。这和我最初的评论是一样的:OP所做的应该是有效的。除非我们有进一步的信息,否则我们不可能回答这个问题。@Christian我删除了我的原始评论B/C我认为我们对你的观点有点过于个人化,在一些有限的情况下,让后端填充一个内联JSON对象可能是有意义的。我的观点是:1。如果采用这种方式,最好让控制器进行JSON编码并将对象打印到隐藏的div,而不是在视图中的JS内部使用PHP;2.不引人注目的JS通常比内联或嵌入式JS B/C更好—它是可重用的,更易于维护,性能更高。最后,紧密耦合会阻碍灵活性、可伸缩性和可维护性。我自己也有点高兴。我必须承认,我最初的评论可能太苛刻了。您的观点非常正确,但您也可以使用JS视图并输出整个系统中注册的所有这些详细信息。还请注意,您一直在暗示MVC,这只是您可能决定使用的一种模式。最后,考虑到这一点,我们不知道OP会在哪里使用这个代码,坦白地说,我把这一切都交给他了。我100%同意。干杯,先生!
var myArray = {1: 'hi', 2: 'bye'};
alert(myArray[2]); // this works!
<?php #foo.php

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