1

我正在通过 Ajax 调用创建一个多维数组来填充 Google 图表(列)。但是,返回的 Array 导致此错误:

Uncaught Error: Not a valid 2D array.  

这是生成要发回的数组的代码:

$chartData = array();

    $i = 0;
    foreach ($hourVal as $value) {

        if($i <= 9){
           $chartData[] = array(
               "0" . $i => (int) $value
            );
        } else {
            $chartData[] = array(
                $i => (int) $value
            );
        }
        $i++;
    }

这是我 console.log 时的数组:

[
 [
  "Terms",
  "Visits"
 ],
 {
  00: 88
 },
 {
  01: 30
 },
 {
  02: 44
 },
 {
  03: 20
 }
]

编辑:我在数组的开头添加一行,还有 json_encode:

array_unshift($chartData, array("Terms","Visits"));
echo json_encode($chartData);

任何想法发生了什么以及如何解决这个问题?

4

2 回答 2

0

那不是二维数组。它是一组对象(和一个数组)。当你这样做时json_encode,只有当你的 PHP 数组是一个数字数组(索引从 开始0)时,你才会得到一个数组。否则你会得到一个对象(因为 JavaScript/JSON 没有“关联数组”)。

您需要确保您的数组是数字的并且从0.

$chartData = array();

$i = 0;
foreach ($hourVal as $value) {
    $chartData[] = array(
        $i => (int) $value
    );
    $i++;
}

我不知道你为什么这样做"0" . $i,但这就是导致你的问题的原因。那是创建一个“关联数组”,它编码为一个对象。

于 2013-11-07T19:23:08.367 回答
0

我已经解决了,因为我用前缀 0 发送它们,然后它使它们成为数组的索引。不得不剪掉那一点并作为字符串发送。不想要但修复:(

于 2013-11-11T11:23:28.990 回答