Javascript 如何在基于JS的Google图表中显示PHP数组值?

Javascript 如何在基于JS的Google图表中显示PHP数组值?,javascript,php,google-visualization,Javascript,Php,Google Visualization,图表文档使用以下示例: var data = new google.visualization.DataTable(); data.addColumn('string', 'Toppings'); data.addColumn('number', 'Slices'); data.addRows([ ['Cheese', 3], ['Onions', 1], ['Olives', 1], ['Zucchini', 1]

图表文档使用以下示例:

    var data = new google.visualization.DataTable();
    data.addColumn('string', 'Toppings');
    data.addColumn('number', 'Slices');
    data.addRows([
      ['Cheese', 3],
      ['Onions', 1],
      ['Olives', 1],
      ['Zucchini', 1],
      ['Pepperoni', 2]
    ]);
我正在构建我的谷歌图表,如下所示:

    var data = new google.visualization.DataTable();
    data.addColumn('string', 'Standing');
    data.addColumn('number', 'Students');
    data.addRows([
      [<?= $users[0]->COLLEGE; ?>, <?= $users[0]->HEADCOUNT; ?>],
    ]);
var data=new google.visualization.DataTable();
data.addColumn('string','Standing');
data.addColumn('number','Students');
data.addRows([
[, ],
]);

但没有打印任何图表。如何使用PHP数组内容填充图表?

您的代码不会在生成的JavaScript值中添加引号(也不会转义它们)。PHPs json_encode能够从PHP字符串生成有效的JavaScript值,并为您处理所有的引号和转义,因此只需使用:

 var data = new google.visualization.DataTable();
    data.addColumn('string', 'Standing');
    data.addColumn('number', 'Students');
    data.addRows([
      [<?= json_encode($users[0]->COLLEGE); ?>, <?= json_encode($users[0]->HEADCOUNT, JSON_NUMERIC_CHECK); ?>],
    ]);
var data=new google.visualization.DataTable();
data.addColumn('string','Standing');
data.addColumn('number','Students');
data.addRows([
[, ],
]);

这还可以防止一大堆XSS和其他讨厌的代码注入攻击,并处理转义。

不要将php和js像那样混合使用,而是应该发出JSON请求来填充图表。请看一下:数组的右方括号后有一个额外的逗号。在PHP中,允许在数组的最后一个条目后面加一个逗号,而在JS中这是无效的。@JonathanKuhn这在JSON中是不允许的,但在JSON中是有效的JS@Aragon0JSON就是JS。Swing和未命中。我看到了,但即使修复了,它也不会呈现图表。您可以显示脚本生成的Javascript吗?并尝试使用逗号运行我的版本,您不需要删除它。我在控制台中看到“未捕获错误:类型不匹配。值0.1与列索引1中的类型编号不匹配”。页面上根本没有显示任何内容。看起来数据输出正确,但我不知道为什么它仍然没有构建图表。这是因为json_encode将其显示为带引号的字符串。我该怎么解决呢?