它只能通过赛道值。我需要的是获取用户名。这是我正在使用的,谢谢
{ "items":[ { "kind":"track", "id":33369455, "uri":"https://api.soundcloud.com/tracks/33369455", "user":{ "id":758840, "username":"JoeDreamer", "avatar_url":"https://i1.sndcdn.com/avatars-000006878204-maqsrd-large.jpg?923db0b"}, "download_count":0, "comment_count":1 }, { "kind":"track", "id":33369455, "uri":"https://api.soundcloud.com/tracks/33369455", "user":{ "id":758840, "username":"JoeDreamer", "avatar_url":"https://i1.sndcdn.com/avatars-000006878204-maqsrd-large.jpg?923db0b"}, "download_count":0, "comment_count":1 }] }
$user = json_decode(file_get_contents("http://mydata.com/data.json")); foreach($user->items as $mydata) { echo $mydata->id . "\n"; foreach($mydata->user as $value) { echo $value->username . "\n"; } }
答案 0 :(得分:1)
也许
$user = json_decode(file_get_contents("http://mydata.com/data.json"));
foreach($user->items as $mydata)
{
echo $mydata->id . "\n";
echo $mydata->user->username;
}
答案 1 :(得分:1)
通过向json_decode()
函数添加一个额外的标志,我们可以告诉函数返回一个关联数组而不是对象。
json_decode(string $ json [,bool $ assoc = false])
如果您选择使用json_decode
这样的话,那么您的任务就会变得非常简单。您可以像访问多维数组一样访问用户名。
$user = json_decode($str,true); // notice the "true" argument here
foreach($user['items'] as $mydata)
{
echo $mydata['id'] . "," . $mydata['user']['username'] . "\n";
}
答案 2 :(得分:0)
您可能错过的是$myData-user
本身就是一个对象。 PHP的json_decode()函数以递归方式传递您使用的JSON字符串的每个元素。
{
"kind":"track",
...
"user":{
"id":758840,
"username":"JoeDreamer",
...
}
}
您必须将用户名作为其父元素的属性进行访问。通过将额外的key
变量添加到内部foreach
循环,我们可以检查密钥名称并仅选择username
属性。
...
foreach($mydata->user as $key=>$value){
if ($key == 'username'){
echo $value . "\n";
}
}
然而,额外的循环是多余的。除非你有某些特定需要循环遍历每个属性,否则你可以直接访问用户名 -
$mydata->user->username