访问数组内的数组

时间:2012-11-26 10:04:33

标签: php jira json

我正在开发一个Jira项目,我正在从API查询中返回一个数据。数据是json_encode格式。

我在访问数组中的数组时遇到问题。

这是我正在使用的json_encode数据。

{
   "expand":"names,schema",
   "startAt":0,
   "maxResults":50,
   "total":1,
   "issues":[
      {
         "expand":"editmeta,renderedFields,transitions,changelog,operations",
         "id":"190579",
         "self":"http://jira.localhost.com/rest/api/2/issue/190579",
         "key":"JIRA-1234",
         "fields":{
            "summary":"Testing Jira ticket only",
            "progress":{
               "progress":0,
               "total":0
            },
            "issuetype":{
               "self":"http://jira.localhost.com/rest/api/2/issuetype/28",
               "id":"28",
               "description":"Short task independent from any project",
               "iconUrl":"http://jira.localhost.com/images/icons/ico_story.png",
               "name":"Ticket",
               "subtask":false
            },
            "timespent":null,
            "reporter":{
               "self":"http://jira.localhost.com/rest/api/2/user?username=username",
               "name":"username",
               "emailAddress":"username@localhost.com",
               "avatarUrls":{
                  "16x16":"http://jira.localhost.com/secure/useravatar?size=small&avatarId=10302",
                  "48x48":"http://jira.localhost.com/secure/useravatar?avatarId=10302"
               },
               "displayName":"User Name",
               "active":true
            },
            "customfield_10430":null,
            "customfield_10490":null,
            "created":"2012-11-26T00:32:26.000-0800",
            "updated":"2012-11-26T00:48:19.000-0800",
            "description":"test description",
            "priority":{
               "self":"http://jira.localhost.com/rest/api/2/priority/6",
               "iconUrl":"http://jira.localhost.com/images/icons/priority_major.gif",
               "name":"Normal",
               "id":"6"
            },
            "issuelinks":[

            ],
            "customfield_10471":null,
            "customfield_11054":[
               "server1,",
               "server2,",
               "server3,",
               "server4",
               "server5,",
               "server6,",
               "server7,",
               "server8,",
               "server9,",
               "server10,",
               "server11,",
               "server12,",
               "server13,"
            ],
            "subtasks":[

            ],
            "status":{
               "self":"http://jira.localhost.com/rest/api/2/status/1",
               "description":"The issue is open and ready for the assignee to start work on it.",
               "iconUrl":"http://jira.localhost.com/images/icons/status_open.gif",
               "name":"Open",
               "id":"1"
            },
            "customfield_10621":null,
            "workratio":-1,
            "customfield_10530":{
               "self":"http://jira.localhost.com/rest/api/2/customFieldOption/10694",
               "value":"S2",
               "id":"10694"
            },
            "customfield_11052":[
               "user.name:1",
               "username:1"
            ],
            "project":{
               "self":"http://jira.localhost.com/rest/api/2/project/JIRA",
               "id":"10190",
               "key":"JIRA",
               "name":"JIRA Tickets",
               "avatarUrls":{
                  "16x16":"http://jira.localhost.com/secure/projectavatar?size=small&pid=10190&avatarId=10011",
                  "48x48":"http://jira.localhost.com/secure/projectavatar?pid=10190&avatarId=10011"
               }
            },
            "customfield_10480":{
               "self":"http://jira.localhost.com/rest/api/2/customFieldOption/10613",
               "value":"QT - Manual",
               "id":"10613"
            },
            "customfield_10420":null,
            "customfield_10054":null,
            "customfield_10053":null,
            "customfield_10051":null,
            "customfield_10630":null,
            "aggregateprogress":{
               "progress":0,
               "total":0
            },
            "timeoriginalestimate":null,
            "customfield_10584":null,
            "customfield_10585":null,
            "customfield_10582":{
               "self":"http://jira.localhost.com/rest/api/2/customFieldOption/10934",
               "value":"Namesd",
               "id":"10934"
            },
            "customfield_10580":{
               "self":"http://jira.localhost.com/rest/api/2/customFieldOption/10808",
               "value":"Names",
               "id":"10808"
            },
            "customfield_10581":{
               "self":"http://jira.localhost.com/rest/api/2/customFieldOption/10913",
               "value":"Name",
               "id":"10913"
            },
            "votes":{
               "self":"http://jira.localhost.com/rest/api/2/issue/JIRA-1234/votes",
               "votes":0,
               "hasVoted":false
            },
            "fixVersions":[

            ],
            "resolution":null,
            "resolutiondate":null,
            "aggregatetimeoriginalestimate":null,
            "customfield_10125":null,
            "duedate":null,
            "watches":{
               "self":"http://jira.localhost.com/rest/api/2/issue/JIRA-1234/watchers",
               "watchCount":1,
               "isWatching":false
            },
            "customfield_10375":null,
            "customfield_10750":"<p>testing only</p>",
            "customfield_10651":"112965",
            "customfield_10374":null,
            "customfield_10650":"128836",
            "customfield_10652":null,
            "customfield_10370":null,
            "assignee":{
               "self":"http://jira.localhost.com/rest/api/2/user?username=johnsmith",
               "name":"johnsmith",
               "emailAddress":"johnsmith@localhost.com",
               "avatarUrls":{
                  "16x16":"http://jira.localhost.com/secure/useravatar?size=small&avatarId=10302",
                  "48x48":"http://jira.localhost.com/secure/useravatar?avatarId=10302"
               },
               "displayName":"John Smith",
               "active":true
            },
            "customfield_10590":null,
            "customfield_10500":{
               "self":"http://jira.localhost.com/rest/api/2/customFieldOption/10630",
               "value":"1",
               "id":"10630"
            },
            "aggregatetimeestimate":null,
            "customfield_10170":null,
            "timeestimate":null,
            "customfield_10440":null,
            "aggregatetimespent":null
         }
      }
   ]
}

这是我的片段PHP代码,用于访问记录和打印。

foreach ($json_output->issues as $issues) {

    echo "{$issues->key}";
    echo "{$issues->fields->summary}";
    echo "{$issues->fields->created}";
    echo "{$issues->fields->reporter->name}";

}

现在,当我想访问customfield_11054时,我可以打印服务器列表

server1, server2, server3, server4, server5, server6, server7, server8, server9, server10,
server11, server12, server13

所以我添加了这个

foreach ($json_output->issues as $issues) {

    echo "{$issues->key}";
    echo "{$issues->fields->summary}";
    echo "{$issues->fields->created}";
    echo "{$issues->fields->reporter->name}";
    echo "{$issues->fields->customfield_11054}";    
}

但我得到的结果是数组。

3 个答案:

答案 0 :(得分:4)

print_r($issues->fields->customfield_11054);

这是一个数组,这就是为什么它说它是一个数组。如果你想获得价值,你必须在那里包装另一个foreach:

foreach ($json_output->issues as $issues) {

    echo $issues->key;
    echo $issues->fields->summary;
    echo $issues->fields->created;
    echo $issues->fields->reporter->name;
    foreach($issues->fields->customfield_11054 as $customField)
    {
        echo $customField;
    }
}

另外,作为附注,您不需要将变量放在“{}”中以将其打印出来。它们是字符串,所以只使用echo $variable;就可以正常工作(就像我在上面的snippit中所做的那样)。

答案 1 :(得分:0)

为简单起见使用此

$data = json_decode($result,true); 

foreach ($data as $values) {

    //then do stuff here
}

答案 2 :(得分:0)

使用implode功能

foreach ($json_output->issues as $issues) {

    echo "{$issues->key}";
    echo "{$issues->fields->summary}";
    echo "{$issues->fields->created}";
    echo "{$issues->fields->reporter->name}";
    echo implode(',', $issues->fields->customfield_11054);    
}