Javascript 将PHP assoc数组转换为json对象

Javascript 将PHP assoc数组转换为json对象,javascript,php,Javascript,Php,我在PHP中有一个assoc数组: foreach ($result as $value) { $x++; $data += array("nds" => array($x => $x), "eds" => array(), "an" => array($x => $this->model->getLng($value))); } 我将此数组发送到一个JS文件,它打印如下: {"nds":{"1":1},"eds":[],"an"

我在PHP中有一个assoc数组:

foreach ($result as $value) {   
    $x++;
    $data += array("nds" => array($x => $x), "eds" => array(), "an" => array($x => $this->model->getLng($value)));
}
我将此数组发送到一个JS文件,它打印如下:

{"nds":{"1":1},"eds":[],"an":{"1":[45.4423073,-75.7979993]}}
但是,我无法访问nds,因为它返回未定义的:

console.log(data.nds);

PHP只是向JS文件发送一个字符串。首先需要设置一个等于该字符串的变量:

<script>
  var json = '<?= $data; ?>';
</script>

@RobM说得很好,我们甚至不需要将其解析为字符串,只需将变量设置为JSON转储:

<script>
  var data = <?= $data; ?>;
  console.log(data.nds); // Object {1: 1}
</script>

var数据=;
console.log(data.nds);//对象{1:1}

这仍然需要您将JSON数据(
{“nds”:{“1”:1},“eds”:[],“an”:{“1”:[45.4423073,-75.7979993]}}
)从PHP脚本传递到JS变量中。

您可以使用jQuery JSON解析器或标准Javascript JSON解析器:

var data = '{"nds":{"1":1},"eds":[],"an":{"1":[45.4423073,-75.7979993]}}';

var d = $.parseJSON(data);  // jQuery
console.log(d['nds']);

var j = JSON.parse(data);   // Javascript
console.log(j['nds']);

示例:

在本例中,我得到:Uncaught TypeError:无法读取未定义的属性'length'。此(
var json='';
)不一定有效,您如何在当前代码中从PHP输出json字符串?我的代码假设PHP变量
$data
被传递给您的JS代码。{“nds”:{“1”:1},“eds”:[],“an”:{“1”:[45.4423073,-75.7979993]}要让我的上述代码正常工作,您需要有以下JS行:
var json='{“nds”:{“1”:1},“eds”:,“an:{“1”:[45.4423073,-75.7979993]}};
。根据您的设置,这应该很容易。但是在字符串成为JS变量之前,我们不能进行任何JS解析。为什么不省略引号呢?这样您就不必
JSON.parse
是否可以让类似console.log(j.nds[0])的东西访问它;
var data = '{"nds":{"1":1},"eds":[],"an":{"1":[45.4423073,-75.7979993]}}';

var d = $.parseJSON(data);  // jQuery
console.log(d['nds']);

var j = JSON.parse(data);   // Javascript
console.log(j['nds']);