从PHP创建JavaScript数组–;方括号和大括号
我正在尝试将代码从PHP后端传递到GoogleChartJavaScriptAPI。我成功地使用了PHP的从PHP创建JavaScript数组–;方括号和大括号,javascript,php,arrays,json,Javascript,Php,Arrays,Json,我正在尝试将代码从PHP后端传递到GoogleChartJavaScriptAPI。我成功地使用了PHP的json\u encode(),用于传递数字和字符串数组。 对于简单的数据数组json\u encode()工作正常: ; 但是,要求行参数作为{花括号}中的对象传递 下面是我尝试生成的JavaScript数组: var data = [ ['Genre', 'Fantasy & Sci Fi', 'Romance', 'Mystery/Crime', 'General',
json\u encode()
,用于传递数字和字符串数组。
对于简单的数据数组json\u encode()
工作正常:
;
但是,要求行参数作为{花括号}中的对象传递
下面是我尝试生成的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中创建对象,但是字典(key=>value数组)以相同的方式转换为JSON(带花括号)。这也会起作用:
$object = new stdClass();
$object->role = 'annotation';
$data = [['Series1', 'Series2', $object], [0, 1], [2, 3], [3, 4]];
这应该可以做到:
$data = [['Series1', 'Series2', ['role'=>'annotation']], [0, 1], [2, 3], [3, 4]];
您可以通过创建一个新的stdClass
在php中创建对象,但是字典(key=>value数组)以相同的方式转换为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对象 您可以在PHP中创建一个对象,json_encode将从中创建一个对象:
$myObj = new stdClass;
$myObj->role = "annotation";
然后是“json_encode($myObj);”将返回所需的JSON对象 当JSON文本直接在
标记中输出时,您不需要JSON.parse()。实际上这样做会出错哦,你说得对。我那里没有。我从记忆中走出来,忘了我不需要那一点。我编辑了这个问题。当直接在
标记中输出JSON文本时,您的可能副本不会JSON.parse()
JSON文本。实际上这样做会出错哦,你说得对。我那里没有。我从记忆中走出来,忘了我不需要那一点。我编辑了这个问题。可能重复的问题似乎已经奏效了!我以为我早就试过了,但一定是弄错了。谢谢你的帮助!美好的如果成功了,最好的做法是将答案标记为正确(通过点击计数器旁边的绿色复选标记),这似乎已经成功了!我以为我早就试过了,但一定是弄错了。谢谢你的帮助!美好的如果有效,最好将答案标记为正确(通过点击计数器旁边的绿色复选标记)