2017-01-27 71 views
1

如何訪問數組中的JSON對象元素?位於數組中的JSON對象的訪問元素

理想情況下,我想知道如何做到這一點,如果數組是未知的大小,也是未知量的JSON對象。

在下面我的例子想訪問ID的JSON對象0和19

array:1 [▼ 
    0 => {#411 ▼ 
    +0: {#157 ▶} 
    +1: {#167 ▶} 
    +2: {#192 ▶} 
    +3: {#200 ▶} 
    +4: {#206 ▶} 
    +5: {#227 ▶} 
    +6: {#235 ▶} 
    +7: {#259 ▶} 
    +8: {#269 ▶} 
    +9: {#281 ▶} 
    +10: {#299 ▶} 
    +11: {#308 ▶} 
    +12: {#316 ▶} 
    +13: {#325 ▶} 
    +14: {#335 ▶} 
    +15: {#352 ▶} 
    +16: {#362 ▶} 
    +17: {#380 ▶} 
    +18: {#390 ▶} 
    +19: {#402 ▼ 
     +"created_at": "Mon Jan 23" 
     +"id": 823548040000000000 
     +"id_str": "823548040000000000" 
     +"text": "blah blah blah blah blah blah blah" 
     +"truncated": true 
     +"entities": {#403 ▶} 
     +"source": "<a href="http://twitter.com" rel="nofollow">Twitter Web Client</a>" 
     +"in_reply_to_status_id": null 
     +"in_reply_to_status_id_str": null 
     +"in_reply_to_user_id": null 
     +"in_reply_to_user_id_str": null 
     +"in_reply_to_screen_name": null 
     +"user": {#406 ▶} 
     +"geo": null 
     +"coordinates": null 
     +"place": null 
     +"contributors": null 
     +"is_quote_status": false 
     +"retweet_count": 3 
     +"favorite_count": 8 
     +"favorited": false 
     +"retweeted": false 
     +"possibly_sensitive": false 
     +"lang": "en" 
    } 
    } 
] 
+0

echo $ arr [0]和echo $ arr [19]? –

+0

這將給我訪問數組(我的例子有一個長度爲1的數組,但不知道如何從那裏進入JSON對象 –

回答

2

頂層是用一個元素的數組索引0(在你的膏第一線)。即是$ var [0]。

$ var [0]似乎包含一個對象,如果我正確解釋您的粘貼(大括號「0 => {」)。因此,如果你想訪問它使用的部分 - >,在你的情況下$ var [0] - > 0或$ var [0] - > 19。

元素0和19是對象(花括號)。所以要訪問他們你做f.ex.是$ var [0] - > 0-> created_at。

編輯:訪問數字對象屬性並不像人們希望的那樣容易。但是,如果你投的對象數組是可以做到的:

((array) $var[0])[0]->created_at 

說明:是$ var [0]是一個對象,但它的性能數值。這是發生T_LNUMBER錯誤的地方。所以我們把這個對象作爲一個數組來處理:(array)$ var [0]。要在結果數組中訪問索引爲0的元素,它將包裝在括號中:((array)$ var [0])[0]。 (沒有括號(「(array)$ var [0] [0]」)它會是一個2維數組)。現在我們處於帶有字符串鍵的對象,可以像平常一樣訪問它。

SO question更詳細地通過這個。

請注意,代碼將不可重複使用,它是針對這種特殊情況量身定製的。因此,如果在其他地方發生這種情況,您應該可以編寫一些將數據從對象轉換爲數組的函數。

+0

你正確地解釋了這個粘貼...抱歉,如果我讓它難以做到這是我最初的想法,但我得到這個錯誤:解析錯誤:語法錯誤,意外'19'(T_LNUMBER),期望標識符(T_STRING)或變量(T_VARIABLE)或'{'或'$' –

+0

@ColinStadig當你得到那個錯誤?當運行json_decode()?或者在代碼中的某處(如果是的話,你能顯示它嗎? –

+0

$ favorites = $ this-> client-> favorites_list(); $ favoritearray [] = $ favorites; dd($ favoritearray [0] - > 19-> id);請注意,我使用Laravel框架,因此dd。 JSON來自Twitter API。 –

0

如果使用json_decode(),它會在JSON轉換成一個PHP變量。然後,您可以訪問元素,但通常情況下(數組索引等)。

https://secure.php.net/manual/en/function.json-decode.php

+1

是不是已經解碼了JSON?至少,這就是我解釋的方式他的第一句話 –