繁体   English   中英

从PHP创建JavaScript数组–方括号和花括号

[英]Creating a JavaScript array from PHP – square brackets and curly braces

我正在尝试将代码从我的PHP后端传递到google-chart JavaScript API。 我已经成功使用PHP的json_encode()传递数字和字符串数组。 对于简单的数据数组, json_encode()可以正常工作:

<?php $data = [['Series1', 'Series2'], [0, 1], [2, 3], [3, 4]]; />
<script>
var data = <?php echo(json_encode($data));?>;
</script>

但是, Google Charts API要求将行参数作为对象传递给{curly括号}。

这是我尝试产生的JavaScript数组:

var data = [
    ['Genre', 'Fantasy & Sci Fi', 'Romance', 'Mystery/Crime', 'General',
     'Western', 'Literature', { role: 'annotation' } ],
    ['2010', 10, 24, 20, 32, 18, 5, ''],
    ['2020', 16, 22, 23, 30, 16, 9, ''],
    ['2030', 28, 19, 29, 30, 12, 13, '']
];

问题在于在PHP中产生了{role: 'annotation'}位。 有什么建议么?

这应该可以解决问题:

$data = [['Series1', 'Series2', ['role'=>'annotation']], [0, 1], [2, 3], [3, 4]]; 

您可以通过创建新的stdClass在php中创建对象,但是将字典(键=>值数组)以相同的方式(使用大括号)转换为JSON。 这也可以工作:

$object = new stdClass();
$object->role = 'annotation';

$data = [['Series1', 'Series2', $object], [0, 1], [2, 3], [3, 4]];

您可以在PHP中创建一个对象,而json_encode将从中创建一个对象:

$myObj = new stdClass;
$myObj->role = "annotation";

然后是'json_encode($ myObj);' 将返回所需的JSON对象。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM