我在php中有一个名为$searchResults
的数组。 $searchResults
中的每个数组的格式如下:
array('name' => <name> , 'value' => <value>)
我想将这个二维数组编码为JSON数组并将其传递回我的JavaScript。如何在PHP中对此数组进行编码,以便我可以在JavaScript中对其进行解码,然后按键遍历每个数组?这甚至可能吗?我找到了编码不使用<key> => <value>
语法的多维数组的示例,但我不确定这些是否适用。一个例子是here。谢谢!
答案 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对象。