将PHP assoc数组转换为json对象

时间:2014-09-12 00:58:53

标签: 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":{"1":[45.4423073,-75.7979993]}}

但是,我无法访问nds,因为这会返回undefined:

console.log(data.nds);

2 个答案:

答案 0 :(得分:1)

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

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

现在我们有一个JS变量json,但它需要转换为一个对象来引用nds属性。我们可以使用JSON.parse()执行此操作:

<script>
  var json = '<?= $data; ?>';
  var data = JSON.parse(json);

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

@RobM提出了一个很好的观点,我们甚至不需要将其解析为字符串,只需将变量设置为JSON转储:

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

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

答案 1 :(得分:0)

您可以使用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']);

示例:http://jsfiddle.net/bb7ak6L5/