如何访问数组中的JSON对象元素?
理想情况下,如果数组的大小未知且JSON对象数量未知,我想知道如何执行此操作。
在下面的示例中,我想访问JSON对象0和19中的id。
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 :(得分:3)
顶级是一个数组,其中一个元素索引为0(粘贴中的第一行)。即是$ var [0]。
$ var [0]似乎包含一个对象,如果我正确解释你的粘贴(大括号“0 =&gt; {”)。因此,如果你想访问它的部分你使用 - &gt;,在你的情况下$ var [0] - &gt; 0或$ var [0] - &gt; 19.
元素0和19是对象(花括号)。所以要访问它们,你需要f.ex.是$ var [0] - &GT; 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]”)它将是一个二维数组)。现在我们在对象上使用字符串键,可以照常访问。
SO question更详细地介绍了这一点。
请注意,代码不可重复使用,它是针对此特定情况量身定制的。因此,如果在其他地方发生这种情况,您应该编写一些将数据从对象转换为数组的函数。
答案 1 :(得分:0)
如果使用json_decode(),它会将JSON转换为PHP变量。然后你可以像平常那样访问元素(数组索引等)。