位于Array中的JSON Object的访问元素

时间:2017-01-27 17:38:04

标签: php

如何访问数组中的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"
    }
  }
]

2 个答案:

答案 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变量。然后你可以像平常那样访问元素(数组索引等)。

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