我是非常基本的新php学习者,我很难获得嵌套数组值,这是我的json结果:
stdClass Object
(
[title] => Aao Raja - Gabbar Is Back | Chitrangada Singh
[link] => stdClass Object
(
[22] => Array
(
[0] => http://r8---sn-aigllnsk.c.docs.google.com/videoplayback?mime=video%2Fmp4&id=o-AExJcTxRDvCYsfgA1cIvQDs1v-pvLhKjTPdDh67X19vz&dur=145.542&itag=22&pl=48&ip=2a03:b0c0:1:d0::2f6:c001&sparams=dur,expire,id,ip,ipbits,itag,lmt,mime,mm,mn,ms,mv,nh,pl,ratebypass,source,upn&key=cms1&sver=3&expire=1437035009&upn=9lTw9Popb18&ratebypass=yes&source=youtube&lmt=1432539432699196&fexp=901816%2C9407809%2C9408142%2C9408420%2C9408710%2C9409172%2C9412774%2C9412846%2C9413149%2C9415664%2C9415958%2C9416126%2C9416370%2C9416656&ipbits=0&signature=3547894526817B37774A7838F8B68493CDD62101.3F143C74D76E8705800445A4CD4476C4F8BCD988&cms_redirect=yes&mm=31&mn=sn-aigllnsk&ms=au&mt=1437013301&mv=m&nh=IgpwcjAzLmxocjE0KgkxMjcuMC4wLjE&utmg=ytap1
[1] =>
[2] => hd720
)
[43] => Array
(
[0] => http://r8---sn-aigllnsk.c.docs.google.com/videoplayback?mime=video%2Fwebm&id=o-AExJcTxRDvCYsfgA1cIvQDs1v-pvLhKjTPdDh67X19vz&dur=0.000&itag=43&pl=48&ip=2a03:b0c0:1:d0::2f6:c001&sparams=dur,expire,id,ip,ipbits,itag,lmt,mime,mm,mn,ms,mv,nh,pl,ratebypass,source,upn&key=cms1&sver=3&expire=1437035009&upn=9lTw9Popb18&ratebypass=yes&source=youtube&lmt=1428933984759484&fexp=901816%2C9407809%2C9408142%2C9408420%2C9408710%2C9409172%2C9412774%2C9412846%2C9413149%2C9415664%2C9415958%2C9416126%2C9416370%2C9416656&ipbits=0&signature=266C126464ECDB4CC0FF076CD41F07BCC4DA7E34.08D9F13B7BF7D92FD1E1963336CC7FB8F19FE899&cms_redirect=yes&mm=31&mn=sn-aigllnsk&ms=au&mt=1437013301&mv=m&nh=IgpwcjAzLmxocjE0KgkxMjcuMC4wLjE&utmg=ytap1
[1] =>
[2] => medium
)
我可以访问标题,但无法访问链接网址:
echo $title = $json->{'title'};
echo $link = $json->{'link'}->{'22'}->{'0'};
如何访问特定的链接数组22
答案 0 :(得分:2)
此echo $title = $json->{'title'};
有效,因为您正在访问对象的属性,并且使用->
是正确的方法。
在这种情况下$json->{'link'}->{'22'}->{'0'}
您试图访问数组项而不是对象的属性,因为$json->{'link'}->{'22'}
是一个数组而不是一个对象。在这种情况下,您应该以这种方式访问它:$json->{'link'}->{'22'}[0]
。为了避免此类问题,当您将JSON
解码为PHP object
时,您可以将true
作为第二个参数传递给函数json_decode
,这样就可以了将整个object
转换为数组。这样,您不必担心将元素作为对象的属性进行访问,您可以始终将它们作为数组项访问。因此,在这种情况下,它将是:$json["link"]["22"][0]
。
答案 1 :(得分:1)
您对访问对象和数组的方式感到困惑。
通过$json->title
获取标题是正确的,但链接应该是$json->link->{'22'}[0]
- 对象和数组的混合。
仅供参考{'name'}
符号与name
相同 - 仅在您在对象名称中包含变量时才需要,例如{$someVar . 'name'}
答案 2 :(得分:1)
我想你使用json_decode()函数。你知道你可以得到一个数组而不是StdClass对象吗?所以,你可以使用。
<?php
$php_array = json_decode($json_string, true);