1

我在 php 中有一个数组数组,称为$searchResults. 其中的每个数组$searchResults的格式如下:

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

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

4

2 回答 2

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>

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

于 2013-09-18T14:56:47.613 回答
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 对象。

于 2013-09-18T14:49:52.810 回答