2016-02-27 124 views
4

我有一个数组,我想从中取消设置第一项,但是当我这样做,并且通过jQuery使用JSON发送信息时,结果将作为对象读取。unset()将数组转换为对象

数组是这样的:

[ “一”, “二”, “三”, “四”]

...然后我取消设置:

unset(myArray[0]); 

。 ..the JSON在的console.log读取:

OBJECT 1: “一” 2: “二”

是什么让它如此,我如何防止它?从我看到的,在PHP中,其余数组的行为就像一个数组,并且我可以使用数组函数,例如array_search,array_intersect等。

回答

6

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

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

要做到这一点,不要用取消设置,而是使用array_splice

array_splice(myArray, 0, 1); 

这样,你的阵列将转向,保证第一个元素将在索引0

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

array_shift(myArray); 
4

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

为了防止这种情况,使用array_values,其重建数组的索引:

unset($myArray[0]); 
$myArray = array_values($myArray); 
+0

我与其他的解决方案去了,但+1替代和功能信息。 –