1

它只是通过轨道值。我需要的是获取用户名。这是我使用的,谢谢

    {
        “项目”:[
        {
        “种类”:“轨道”,
        “身份证”:33369455,
        "uri":"https://api.soundcloud.com/tracks/33369455",
        “用户”:{
        “身份证”:758840,
        "用户名":"JoeDreamer",
        "avatar_url":"https://i1.sndcdn.com/avatars-000006878204-maqsrd-large.jpg?923db0b"},
        "download_count":0,
        “comment_count”:1
        },
        {
        “种类”:“轨道”,
        “身份证”:33369455,
        "uri":"https://api.soundcloud.com/tracks/33369455",
        “用户”:{
        “身份证”:758840,
        "用户名":"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)
    {
         回声 $mydata->id 。"\n";
         foreach($mydata->user as $value)
         {
              回声 $value->用户名 。"\n";
         }
    }    

4

3 回答 3

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;

}    
于 2012-12-25T18:34:35.000 回答
1

通过向函数添加一个附加标志json_decode(),我们可以告诉函数返回关联数组而不是对象。

json_decode ( 字符串 $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";
}  
于 2012-12-25T18:51:33.337 回答
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
于 2012-12-25T18:36:26.620 回答