如何使用PHP从stdClass对象(json输出)访问数组?

时间:2013-11-26 08:29:13

标签: php arrays json

大家好,这里需要一些帮助。因为我有一个json数据,我解码它。但我无法使用foreach循环访问它。当我试图打印阵列结构时,我得到了这个:

Array
(
    [0] => stdClass Object
        (
            [code] => AD
            [country] => Andorra
        )

    [1] => stdClass Object
        (
            [code] => AE
            [country] => United Arab Emirates
        )

    [2] => stdClass Object
        (
            [code] => AF
            [country] => Afghanistan
        )

    [3] => stdClass Object
        (
            [code] => AG
            [country] => Antigua and Barbuda
        )

    .
    .
    .

我想要的只是访问代码和国家/地区

我使用了这个循环,但它显示了索引名称和值:

foreach($decode_country as $p){
   foreach($p as $key => $value){
      echo $key."--".$value."<br />";
   }
}

但它显示:

code--AD
country--Andorra
code--AE
country--United Arab Emirates
code--AF
country--Afghanistan
code--AG
country--Antigua and Barbuda
code--AI
country--Anguilla
code--AL
country--Albania
code--AM
country--Armenia

2 个答案:

答案 0 :(得分:2)

尝试

foreach($decode_country as $p){
   echo "code -- ".$p->code."<br>";
   echo "country -- ".$p->country."<br>";
}

此处$p将被视为对象,您可以使用codecountry提取$p->code$p->country。或者更好: 解码 json数据,您需要提供

$decode_country = json_decode($data,true);

true将返回数组结果。然后使用

foreach($decode_country as $p){
   echo "code -- ".$p['code']."<br>";
   echo "country -- ".$p['country']."<br>";
}

答案 1 :(得分:1)

你可以试试这个

foreach($decode_country as $p){
    echo $p->code;
    echo $p->country;
}

此处$decode_countryarray个对象,在foreach循环内,每个$p都是一个对象。

如果您使用json_decode($data, true);,请使用

echo $p['code'];

使用TRUE时,返回的对象将转换为关联数组。 否则,请使用

echo $p->code;