2016-02-27 211 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替代和功能信息。 –