我正在通过Ajax调用创建一个多维数组来填充Google图表(列)。但是,返回的数组导致此错误:
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++;
}
这是我控制台时的数组.log:
[
[
"Terms",
"Visits"
],
{
00: 88
},
{
01: 30
},
{
02: 44
},
{
03: 20
}
]
编辑:我在数组的开头添加了一行,还json_encode:
array_unshift($chartData, array("Terms","Visits"));
echo json_encode($chartData);
任何想法发生了什么以及如何解决这个问题?
这不是一个 2D 数组。 它是一个对象数组(和一个数组)。 当你做json_encode
时,只有当你的PHP数组是数字数组(索引从0
开始)时,你才会得到一个数组。 否则你会得到一个对象(因为JavaScript/JSON没有"关联数组")。
您需要确保您的数组是数字并从 0
开始索引。
$chartData = array();
$i = 0;
foreach ($hourVal as $value) {
$chartData[] = array(
$i => (int) $value
);
$i++;
}
我不知道你为什么要做"0" . $i
,但这就是导致你的问题的原因。 那就是创建一个"关联数组",它编码为一个对象。
我已经
解决了它,这是因为我用前缀 0 发送它们,然后使它们成为数组的索引。不得不把那个位剪掉,作为字符串发送。不需要,但修复:(