-1

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

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

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

4

2 回答 2

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.constructoris not Array()

于 2013-08-25T19:55:06.957 回答
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);
};
于 2013-08-25T20:54:00.907 回答