嵌套数组Foreach问题

时间:2015-07-16 02:31:18

标签: php arrays loops foreach

我是非常基本的新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

3 个答案:

答案 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);