如何使用foreach检索嵌套数组值

时间:2014-10-30 10:59:10

标签: php arrays json

{"status":1,
    "datetime":"2014-10-30 13:53:27",
    "data":{"authToken":"8019065c7362d1",
        "role":{"code":"USER","name":"User","activeFlag":1}
           }
}

我的PHP代码

<?php
$json='{"status":1,"datetime":"2014-10-30 13:53:27","data":{"authToken":"8019065c7362d16096eaa18df665521304a37549","role":{"code":"USER","name":"User","activeFlag":1}}}';
$array = json_decode($json);
foreach ($array as $a) {
    print_r($a);
}
?>

输出:

1 2014-10-30 13:53:27stdClass Object ( [authToken] => 8019065c7362d16096eaa18df665521304a37549 [role] => stdClass Object ( [code] => USER [name] => User [activeFlag] => 1 ) )

我的问题是第三个值“authToken”未来。 我必须使用哪个数组属性来检索JASON解码值。

3 个答案:

答案 0 :(得分:0)

使用这些代码从变量$array中获取authToken。

$authToken = $array->data->authToken;

您将其命名为$array,但实际上它是一个对象,因此您应该使用上面的方法来引用嵌套在其中的值。


以上在评论中提到,

  

尝试$ array = json_decode($ json,true); - 网络开发人员

如果使用此方法解码json,则应使用

$authToken = $array['data']['authToken'];

获得authToken。

答案 1 :(得分:0)

试试此代码

$json='{"status":1,"datetime":"2014-10-30 13:53:27","data":{"authToken":"8019065c7362d16096eaa18df665521304a37549","role":{"code":"USER","name":"User","activeFlag":1}}}';
    $array = json_decode($json);

    print_r($array->data->authToken);

这里$ array是stdClass对象,数据也是stdClass对象。

答案 2 :(得分:0)

 $array = json_decode($json);
//echo '<pre>';
foreach($array as $arr){
    $token[]=$arr->data->authToken;
}
print_r($token);

此代码将存储数组$ token

中的所有auth:tokens