Javascript将我的嵌套数组视为对象

时间:2016-12-29 09:30:40

标签: javascript php arrays

我正在尝试将嵌套的PHP数组发送到Javascript。但Javascript将顶层解析为对象。

  

团队数组应包含2个其他数组,每个团队名称为2个

正如您在屏幕截图和json中看到的那样,“团队”是一个对象。

"teams":{"1":["test","test"],"2":["test","test"]},"results":[]}

enter image description here

这是我用来构建嵌套数组的代码

$iterator = 0;
for($i = 0; $i < $competition->teams->count(); $i++) {
    if($i % 2 == 0) {
        $iterator++;
    }
    $data["teams"][$iterator][] = "test";
}

有趣的是,当数组不是多维时,它正在工作。 例如,以下示例不会将团队作为对象返回。

enter image description here

我猜我是否删除它可能有效的数组键,但是没有数组键的嵌套数组是不可能的,对吧?

知道我可能做错了什么吗?我怎样才能让Javascript看到我的嵌套数组而不将其视为对象。

谢谢!

1 个答案:

答案 0 :(得分:4)

您的代码存在一个问题,$iterator始终以值1开头,因此json_encode函数使用JSON对象来保留该索引。

当您开始从0索引数组时,所有内容都会发生变化。

$test = array(
    1 => 'test'
);

echo json_encode($test);

显示作为对象的{"1":"test"}

$test = array(
    0 => 'test'
);

echo json_encode($test);

显示["test"]这是一个数组。