如何将二维PHP数组编码为要在JavaScript中解码的JSON数组?

时间:2013-09-18 14:44:13

标签: javascript php ajax json

我在php中有一个名为$searchResults的数组。 $searchResults中的每个数组的格式如下:

array('name' => <name> , 'value' => <value>)

我想将这个二维数组编码为JSON数组并将其传递回我的JavaScript。如何在PHP中对此数组进行编码,以便我可以在JavaScript中对其进行解码,然后按键遍历每个数组?这甚至可能吗?我找到了编码不使用<key> => <value>语法的多维数组的示例,但我不确定这些是否适用。一个例子是here。谢谢!

2 个答案:

答案 0 :(得分:1)

我看到两种方式:

1)以当前状态传递数组:

<?php
$array = [
    [ 'name' => 'x' , 'value' => 1 ],
    [ 'name' => 'y' , 'value' => 2 ],
    [ 'name' => 'z' , 'value' => 3 ]
];
?>

<script type="text/javascript">
var php_json = <?php echo json_encode($array); ?>;

for(var i = 0; i < php_json.length; i++){
    console.log(php_json[i]);
}
</script>

2)转换为键值对并传递:

<?php
$array = [
    [ 'name' => 'x' , 'value' => 1 ],
    [ 'name' => 'y' , 'value' => 2 ],
    [ 'name' => 'z' , 'value' => 3 ]
];

$buffer = [];

foreach($array as &$nested){
    $buffer[$nested['name']] = $nested['value'];
}
?>

<script type="text/javascript">
var php_json = <?php echo json_encode($buffer); ?>;

for(var key in php_json){
     console.log(key, php_json[key]);
     //       key ^      ^ value
}
</script>

您可以使用json_encode()函数轻松地将任何简单的php数据结构传递给javascript。

答案 1 :(得分:0)

我在模板中使用它:

<script>window.bootstrapped_data = <?php echo json_encode($my_js_vars); ?>;</script>

渲染输出如下所示:

<script>window.bootstrapped_data = {"name":"<name>","value":"<value"};</script>

用您的变量名替换$my_js_vars,并根据需要调用JavaScript变量。然后,您可以在JavaScript中正常访问此变量。

不要让json_encode抛弃你,PHP将呈现一个有效的JavaScript对象。