unset()将数组转换为对象

Dan*_*ian 8 php arrays json

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

该数组如下所示:

["一二三四"]

......然后我解开了:

$myArray = ["one", "two", "three", "four"]
Run Code Online (Sandbox Code Playgroud)

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

对象1:"一"2:"两个"

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

tri*_*cot 9

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

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

要实现这一点,请不要使用unset,而是使用array_splice:

array_splice(myArray, 0, 1);
Run Code Online (Sandbox Code Playgroud)

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

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

array_shift(myArray);
Run Code Online (Sandbox Code Playgroud)


Mat*_*Mat 9

我不太确定为什么它会转换成一个object而不是一个array.这肯定是因为没有索引0(确实).

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

unset($myArray[0]);
$myArray = array_values($myArray);
Run Code Online (Sandbox Code Playgroud)