unset()将数组转换为对象

时间:2016-02-27 16:58:00

标签: php arrays json

我有一个数组,我想从中取消第一项,但是当我这样做时,我通过jQuery发送带有JSON的信息,结果被读作对象。

数组如下所示:

[“one”,“two”,“three”,“four”]

...然后我解开了:

unset(myArray[0]);

... console.log中的JSON读取:

OBJECT 1:“一” 2:“两个”

是什么让它如此,我该如何预防呢?从我所看到的,在PHP中,剩下的数组就像一个数组,我可以使用数组函数,例如array_search,array_intersect等。

2 个答案:

答案 0 :(得分:8)

在JSON中,数组总是从索引0开始。因此,如果在PHP中删除元素0,则数组从1开始。但是这不能用JSON中的数组表示法表示。所以它被表示为一个对象,它支持键/值对。

要使JSON将数据表示为数组,必须确保数组从索引0开始并且没有间隙。

要实现这一目标,请不要使用取消设置,而应使用array_splice

array_splice(myArray, 0, 1);

这样你的数组就会移动,确保第一个元素位于索引0。

如果它始终是您要删除的第一个元素,那么您可以使用较短的array_shift

array_shift(myArray);

答案 1 :(得分:7)

我不确定为什么它转换为0而不是object。这肯定是因为没有索引array(确实)。

为防止这种情况,请使用重建数组索引的0

array_values