Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从PHP创建JavaScript数组–;方括号和大括号_Javascript_Php_Arrays_Json - Fatal编程技术网

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

从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',

我正在尝试将代码从PHP后端传递到GoogleChartJavaScriptAPI。我成功地使用了PHP的
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文本。实际上这样做会出错哦,你说得对。我那里没有。我从记忆中走出来,忘了我不需要那一点。我编辑了这个问题。可能重复的问题似乎已经奏效了!我以为我早就试过了,但一定是弄错了。谢谢你的帮助!美好的如果成功了,最好的做法是将答案标记为正确(通过点击计数器旁边的绿色复选标记),这似乎已经成功了!我以为我早就试过了,但一定是弄错了。谢谢你的帮助!美好的如果有效,最好将答案标记为正确(通过点击计数器旁边的绿色复选标记)