2017-08-29 21 views
0

当我尝试解析我的json时,我遇到了一个小问题。我的循环只运行两次,当我知道通过手动检查JSON它应该是五场比赛。所以我想知道的是我能做些什么才能做到这一点?预先感谢任何帮助,我可以得到。当使用php解析嵌套的json时,只显示五分之二可能出现

这里是我的PHP代码:

$url = "https://example.com"; 
$result = file_get_contents($url); 
    // Will dump a beauty json :3 
    $decoded = json_decode($result); 
    $comments = $decoded->tournaments[0]->events; 
    foreach($comments as $comment){ 
    $homeTeam = $comment->homeTeam->name; 
    $homeScore = $comment->homeScore->current; 
    $awayTeam = $comment->awayTeam->name; 
    $awayScore = $comment->awayScore->current; 
    $status = $comment->status->type; 
    //do something with it 
    echo $homeTeam; 
    echo "</br>"; 
    echo $homeScore; 
    echo "</br>"; 
    echo $awayTeam; 
    echo "</br>"; 
    echo $awayScore; 
    echo "</br>"; 
    echo $status; 
    echo "</br>"; 
    } 

这是我的输出:

Skjern Handbold 
24 
GOG Handbold 
23 
finished 
Aalborg Handbold 
32 
Skjern Handbold 
24 
finished 

这里是JSON的例子(抱歉,但我想我不会允许共享源)。

{ 
    "sport":{ 
     "name":"Handball", 
     "slug":"handball", 
     "id":6 
    }, 
    "rows":1, 
    "tournaments":[ 
     { 
     "tournament":{ 
      "name":"Handboldligaen Qualification Round, Group 1", 
      "slug":"handboldligaen-qualification-round-group-1", 
      "id":10600, 
      "uniqueId":157, 
      "uniqueName":"Handboldligaen", 
      "hasEventPlayerStatistics":false, 
      "hasEventPlayerHeatMap":false 
     }, 
     "category":{ 
      "name":"Denmark", 
      "slug":"denmark", 
      "priority":0, 
      "id":59, 
      "flag":"denmark" 
     }, 
     "season":{ 
      "name":"Handboldligaen 16\/17", 
      "slug":"handboldligaen-1617", 
      "year":"16\/17", 
      "id":12321 
     }, 
     "hasEventPlayerStatistics":false, 
     "hasEventPlayerHeatMap":false, 
     "events":[ 
      { 
       "sport":{ 
        "name":"Handball", 
        "slug":"handball", 
        "id":6 
       }, 
       "roundInfo":{ 
        "round":5 
       }, 
       "customId":"FGbsNGb", 
       "status":{ 
        "code":100, 
        "type":"finished" 
       }, 
       "winnerCode":1, 
       "homeTeam":{ 
        "name":"Skjern Handbold", 
        "slug":"skjern-handbold", 
        "gender":"M", 
        "id":4080, 
        "subTeams":[ 

        ] 
       }, 
       "awayTeam":{ 
        "name":"GOG Handbold", 
        "slug":"gog-handbold", 
        "gender":"M", 
        "id":4088, 
        "subTeams":[ 

        ] 
       }, 
       "homeScore":{ 
        "current":24, 
        "period1":12, 
        "normaltime":24 
       }, 
       "awayScore":{ 
        "current":23, 
        "period1":13, 
        "normaltime":23 
       }, 
       "time":{ 

       }, 
       "changes":{ 
        "changeDate":"2017-04-26T20:07:28+00:00", 
        "changes":[ 
        "status.code", 
        "status.description", 
        "status.type", 
        "homeScore.normaltime", 
        "awayScore.normaltime" 
        ], 
        "changeTimestamp":1493237248, 
        "hasExpired":true, 
        "hasHomeChanges":false, 
        "hasAwayChanges":false 
       }, 
       "hasHighlights":false, 
       "hasHighlightsStream":false, 
       "id":7380204, 
       "hasStatistics":true, 
       "name":"Skjern Handbold - GOG Handbold", 
       "startTime":"18:30", 
       "formatedStartDate":"26.04.2017.", 
       "startTimestamp":1493231400, 
       "statusDescription":"FT", 
       "slug":"gog-handbold-skjern-handbold", 
       "uniqueTournamentId":157, 
       "hasLineups":false, 
       "hasLineupsList":false, 
       "hasOdds":true, 
       "hasLiveOdds":true, 
       "hasSubScore":false, 
       "hasAggregatedScore":false, 
       "hasFirstToServe":false, 
       "hasDraw":true, 
       "votingEnabled":false, 
       "hasTime":false, 
       "isSyncable":true, 
       "confirmedLineups":false 
      }, 
      { 
       "sport":{ 
        "name":"Handball", 
        "slug":"handball", 
        "id":6 
       }, 
       "roundInfo":{ 
        "round":6 
       }, 
       "customId":"FGbsKGb", 
       "status":{ 
        "code":100, 
        "type":"finished" 
       }, 
       "winnerCode":1, 
       "homeTeam":{ 
        "name":"Aalborg Handbold", 
        "slug":"aalborg-handbold", 
        "gender":"M", 
        "id":4085, 
        "subTeams":[ 

        ] 
       }, 
       "awayTeam":{ 
        "name":"Skjern Handbold", 
        "slug":"skjern-handbold", 
        "gender":"M", 
        "id":4080, 
        "subTeams":[ 

        ] 
       }, 
       "homeScore":{ 
        "current":32, 
        "period1":18, 
        "normaltime":32 
       }, 
       "awayScore":{ 
        "current":24, 
        "period1":13, 
        "normaltime":24 
       }, 
       "time":{ 

       }, 
       "changes":{ 
        "changeDate":"2017-04-30T17:58:53+00:00", 
        "changes":[ 
        "status.code", 
        "status.description", 
        "status.type", 
        "homeScore.normaltime", 
        "awayScore.normaltime" 
        ], 
        "changeTimestamp":1493575133, 
        "hasExpired":true, 
        "hasHomeChanges":false, 
        "hasAwayChanges":false 
       }, 
       "hasHighlights":false, 
       "hasHighlightsStream":false, 
       "id":7380206, 
       "hasStatistics":true, 
       "name":"Aalborg Handbold - Skjern Handbold", 
       "startTime":"16:30", 
       "formatedStartDate":"30.04.2017.", 
       "startTimestamp":1493569800, 
       "statusDescription":"FT", 
       "slug":"aalborg-handbold-skjern-handbold", 
       "uniqueTournamentId":157, 
       "hasLineups":false, 
       "hasLineupsList":false, 
       "hasOdds":true, 
       "hasLiveOdds":false, 
       "hasSubScore":false, 
       "hasAggregatedScore":false, 
       "hasFirstToServe":false, 
       "hasDraw":true, 
       "votingEnabled":false, 
       "hasTime":false, 
       "isSyncable":true, 
       "confirmedLineups":false 
      } 
     ] 
     }, 
     { 
     "tournament":{ 
      "name":"Handboldligaen, Playoffs", 
      "slug":"handboldligaen-playoffs", 
      "id":5918, 
      "uniqueId":157, 
      "uniqueName":"Handboldligaen", 
      "hasEventPlayerStatistics":false, 
      "hasEventPlayerHeatMap":false 
     }, 
     "category":{ 
      "name":"Denmark", 
      "slug":"denmark", 
      "priority":0, 
      "id":59, 
      "flag":"denmark" 
     }, 
     "season":{ 
      "name":"Handboldligaen 16\/17", 
      "slug":"handboldligaen-1617", 
      "year":"16\/17", 
      "id":12321 
     }, 
     "hasEventPlayerStatistics":false, 
     "hasEventPlayerHeatMap":false, 
     "events":[ 
      { 
       "sport":{ 
        "name":"Handball", 
        "slug":"handball", 
        "id":6 
       }, 
       "roundInfo":{ 
        "round":2, 
        "name":"Semifinals" 
       }, 
       "customId":"FGbsnFE", 
       "status":{ 
        "code":100, 
        "type":"finished" 
       }, 
       "winnerCode":1, 
       "homeTeam":{ 
        "name":"Skjern Handbold", 
        "slug":"skjern-handbold", 
        "gender":"M", 
        "id":4080, 
        "subTeams":[ 

        ] 
       }, 
       "awayTeam":{ 
        "name":"Ribe-Esbjerg HH", 
        "slug":"ribe-esbjerg-hh", 
        "gender":"M", 
        "id":74013, 
        "subTeams":[ 

        ] 
       }, 
       "homeScore":{ 
        "current":26, 
        "period1":13, 
        "normaltime":26 
       }, 
       "awayScore":{ 
        "current":24, 
        "period1":12, 
        "normaltime":24 
       }, 
       "time":{ 

       }, 
       "changes":{ 
        "changeDate":"2017-05-11T20:10:09+00:00", 
        "changes":[ 
        "status.code", 
        "status.description", 
        "status.type", 
        "homeScore.normaltime", 
        "awayScore.normaltime" 
        ], 
        "changeTimestamp":1494533409, 
        "hasExpired":true, 
        "hasHomeChanges":false, 
        "hasAwayChanges":false 
       }, 
       "hasHighlights":false, 
       "hasHighlightsStream":false, 
       "id":7406145, 
       "hasStatistics":true, 
       "name":"Skjern Handbold - Ribe-Esbjerg HH", 
       "startTime":"18:30", 
       "formatedStartDate":"11.05.2017.", 
       "startTimestamp":1494527400, 
       "statusDescription":"FT", 
       "slug":"ribe-esbjerg-hh-skjern-handbold", 
       "uniqueTournamentId":157, 
       "hasLineups":false, 
       "hasLineupsList":false, 
       "hasOdds":true, 
       "hasLiveOdds":true, 
       "hasSubScore":false, 
       "hasAggregatedScore":false, 
       "hasFirstToServe":false, 
       "hasDraw":true, 
       "votingEnabled":false, 
       "hasTime":false, 
       "isSyncable":true, 
       "confirmedLineups":false 
      }, 
      { 
       "sport":{ 
        "name":"Handball", 
        "slug":"handball", 
        "id":6 
       }, 
       "roundInfo":{ 
        "round":2, 
        "name":"Semifinals" 
       }, 
       "customId":"FGbsnFE", 
       "status":{ 
        "code":100, 
        "type":"finished" 
       }, 
       "winnerCode":2, 
       "homeTeam":{ 
        "name":"Ribe-Esbjerg HH", 
        "slug":"ribe-esbjerg-hh", 
        "gender":"M", 
        "id":74013, 
        "subTeams":[ 

        ] 
       }, 
       "awayTeam":{ 
        "name":"Skjern Handbold", 
        "slug":"skjern-handbold", 
        "gender":"M", 
        "id":4080, 
        "subTeams":[ 

        ] 
       }, 
       "homeScore":{ 
        "current":26, 
        "period1":12, 
        "normaltime":26 
       }, 
       "awayScore":{ 
        "current":31, 
        "period1":18, 
        "normaltime":31 
       }, 
       "time":{ 

       }, 
       "changes":{ 
        "changeDate":"2017-05-14T15:48:53+00:00", 
        "changes":[ 
        "status.code", 
        "status.description", 
        "status.type", 
        "homeScore.normaltime", 
        "awayScore.normaltime" 
        ], 
        "changeTimestamp":1494776933, 
        "hasExpired":true, 
        "hasHomeChanges":false, 
        "hasAwayChanges":false 
       }, 
       "hasHighlights":false, 
       "hasHighlightsStream":false, 
       "id":7406146, 
       "hasStatistics":true, 
       "name":"Ribe-Esbjerg HH - Skjern Handbold", 
       "startTime":"14:10", 
       "formatedStartDate":"14.05.2017.", 
       "startTimestamp":1494771000, 
       "statusDescription":"FT", 
       "slug":"ribe-esbjerg-hh-skjern-handbold", 
       "uniqueTournamentId":157, 
       "hasLineups":false, 
       "hasLineupsList":false, 
       "hasOdds":true, 
       "hasLiveOdds":true, 
       "hasSubScore":false, 
       "hasAggregatedScore":false, 
       "hasFirstToServe":false, 
       "hasDraw":true, 
       "votingEnabled":false, 
       "hasTime":false, 
       "isSyncable":true, 
       "confirmedLineups":false 
      }, 
      { 
       "sport":{ 
        "name":"Handball", 
        "slug":"handball", 
        "id":6 
       }, 
       "roundInfo":{ 
        "round":1, 
        "name":"Final" 
       }, 
       "customId":"FGbsKGb", 
       "status":{ 
        "code":100, 
        "type":"finished" 
       }, 
       "winnerCode":3, 
       "homeTeam":{ 
        "name":"Aalborg Handbold", 
        "slug":"aalborg-handbold", 
        "gender":"M", 
        "id":4085, 
        "subTeams":[ 

        ] 
       }, 
       "awayTeam":{ 
        "name":"Skjern Handbold", 
        "slug":"skjern-handbold", 
        "gender":"M", 
        "id":4080, 
        "subTeams":[ 

        ] 
       }, 
       "homeScore":{ 
        "current":26, 
        "period1":14, 
        "normaltime":26 
       }, 
       "awayScore":{ 
        "current":26, 
        "period1":11, 
        "normaltime":26 
       }, 
       "time":{ 

       }, 
       "changes":{ 
        "changeDate":"2017-05-25T15:51:05+00:00", 
        "changes":[ 
        "status.code", 
        "status.description", 
        "status.type", 
        "homeScore.normaltime", 
        "awayScore.normaltime" 
        ], 
        "changeTimestamp":1495727465, 
        "hasExpired":true, 
        "hasHomeChanges":false, 
        "hasAwayChanges":false 
       }, 
       "hasHighlights":false, 
       "hasHighlightsStream":false, 
       "id":7416916, 
       "hasStatistics":true, 
       "name":"Aalborg Handbold - Skjern Handbold", 
       "startTime":"14:10", 
       "formatedStartDate":"25.05.2017.", 
       "startTimestamp":1495721400, 
       "statusDescription":"FT", 
       "slug":"aalborg-handbold-skjern-handbold", 
       "uniqueTournamentId":157, 
       "hasLineups":false, 
       "hasLineupsList":false, 
       "hasOdds":true, 
       "hasLiveOdds":true, 
       "hasSubScore":false, 
       "hasAggregatedScore":false, 
       "hasFirstToServe":false, 
       "hasDraw":true, 
       "votingEnabled":false, 
       "hasTime":false, 
       "isSyncable":true, 
       "confirmedLineups":false 
      }, 
      { 
       "sport":{ 
        "name":"Handball", 
        "slug":"handball", 
        "id":6 
       }, 
       "roundInfo":{ 
        "round":1, 
        "name":"Final" 
       }, 
       "customId":"FGbsKGb", 
       "status":{ 
        "code":100, 
        "type":"finished" 
       }, 
       "winnerCode":2, 
       "homeTeam":{ 
        "name":"Skjern Handbold", 
        "slug":"skjern-handbold", 
        "gender":"M", 
        "id":4080, 
        "subTeams":[ 

        ] 
       }, 
       "awayTeam":{ 
        "name":"Aalborg Handbold", 
        "slug":"aalborg-handbold", 
        "gender":"M", 
        "id":4085, 
        "subTeams":[ 

        ] 
       }, 
       "homeScore":{ 
        "current":25, 
        "period1":10, 
        "normaltime":25 
       }, 
       "awayScore":{ 
        "current":32, 
        "period1":14, 
        "normaltime":32 
       }, 
       "time":{ 

       }, 
       "changes":{ 
        "changeDate":"2017-05-28T15:47:33+00:00", 
        "changes":[ 
        "status.code", 
        "status.description", 
        "status.type", 
        "homeScore.normaltime", 
        "awayScore.normaltime" 
        ], 
        "changeTimestamp":1495986453, 
        "hasExpired":true, 
        "hasHomeChanges":false, 
        "hasAwayChanges":false 
       }, 
       "hasHighlights":false, 
       "hasHighlightsStream":false, 
       "id":7416915, 
       "hasStatistics":true, 
       "name":"Skjern Handbold - Aalborg Handbold", 
       "startTime":"14:10", 
       "formatedStartDate":"28.05.2017.", 
       "startTimestamp":1495980600, 
       "statusDescription":"FT", 
       "slug":"aalborg-handbold-skjern-handbold", 
       "uniqueTournamentId":157, 
       "hasLineups":false, 
       "hasLineupsList":false, 
       "hasOdds":true, 
       "hasLiveOdds":true, 
       "hasSubScore":false, 
       "hasAggregatedScore":false, 
       "hasFirstToServe":false, 
       "hasDraw":true, 
       "votingEnabled":false, 
       "hasTime":false, 
       "isSyncable":true, 
       "confirmedLineups":false 
      } 
     ] 
     }, 
     { 
     "tournament":{ 
      "name":"Cup", 
      "slug":"cup", 
      "id":244, 
      "uniqueId":1319, 
      "uniqueName":"Cup", 
      "hasEventPlayerStatistics":false, 
      "hasEventPlayerHeatMap":false 
     }, 
     "category":{ 
      "name":"Denmark", 
      "slug":"denmark", 
      "priority":0, 
      "id":59, 
      "flag":"denmark" 
     }, 
     "season":{ 
      "name":"Cup 17\/18", 
      "slug":"cup-1718", 
      "year":"17\/18", 
      "id":14155 
     }, 
     "hasEventPlayerStatistics":false, 
     "hasEventPlayerHeatMap":false, 
     "events":[ 
      { 
       "sport":{ 
        "name":"Handball", 
        "slug":"handball", 
        "id":6 
       }, 
       "roundInfo":{ 
        "round":4, 
        "name":"1\/8" 
       }, 
       "customId":"FGbsQpM", 
       "status":{ 
        "code":100, 
        "type":"finished" 
       }, 
       "winnerCode":2, 
       "homeTeam":{ 
        "name":"Sydhavsoerne", 
        "slug":"sydhavsoerne", 
        "gender":"M", 
        "id":93291, 
        "subTeams":[ 

        ] 
       }, 
       "awayTeam":{ 
        "name":"Skjern Handbold", 
        "slug":"skjern-handbold", 
        "gender":"M", 
        "id":4080, 
        "subTeams":[ 

        ] 
       }, 
       "homeScore":{ 
        "current":21, 
        "period1":12, 
        "normaltime":21 
       }, 
       "awayScore":{ 
        "current":31, 
        "period1":16, 
        "normaltime":31 
       }, 
       "time":{ 

       }, 
       "changes":{ 
        "changes":[ 

        ], 
        "changeTimestamp":0, 
        "hasExpired":true, 
        "hasHomeChanges":false, 
        "hasAwayChanges":false 
       }, 
       "hasHighlights":false, 
       "hasHighlightsStream":false, 
       "id":7538722, 
       "hasStatistics":false, 
       "name":"Sydhavsoerne - Skjern Handbold", 
       "startTime":"17:30", 
       "formatedStartDate":"23.08.2017.", 
       "startTimestamp":1503509400, 
       "statusDescription":"FT", 
       "slug":"sydhavsoerne-skjern-handbold", 
       "uniqueTournamentId":1319, 
       "hasLineups":false, 
       "hasLineupsList":false, 
       "hasOdds":true, 
       "hasLiveOdds":false, 
       "hasSubScore":false, 
       "hasAggregatedScore":false, 
       "hasFirstToServe":false, 
       "hasDraw":true, 
       "votingEnabled":false, 
       "hasTime":false, 
       "isSyncable":true, 
       "confirmedLineups":false 
      } 
     ] 
     }, 
     { 
     "tournament":{ 
      "name":"Super Cup", 
      "slug":"super-cup", 
      "id":17307, 
      "uniqueId":10493, 
      "uniqueName":"Super Cup", 
      "hasEventPlayerStatistics":false, 
      "hasEventPlayerHeatMap":false 
     }, 
     "category":{ 
      "name":"Denmark", 
      "slug":"denmark", 
      "priority":0, 
      "id":59, 
      "flag":"denmark" 
     }, 
     "season":{ 
      "name":"Super Cup 2017", 
      "slug":"super-cup-2017", 
      "year":"2017", 
      "id":14279 
     }, 
     "hasEventPlayerStatistics":false, 
     "hasEventPlayerHeatMap":false, 
     "events":[ 
      { 
       "sport":{ 
        "name":"Handball", 
        "slug":"handball", 
        "id":6 
       }, 
       "roundInfo":{ 
        "round":1, 
        "name":"Final" 
       }, 
       "customId":"FGbsKGb", 
       "status":{ 
        "code":100, 
        "type":"finished" 
       }, 
       "winnerCode":1, 
       "homeTeam":{ 
        "name":"Skjern Handbold", 
        "slug":"skjern-handbold", 
        "gender":"M", 
        "id":4080, 
        "subTeams":[ 

        ] 
       }, 
       "awayTeam":{ 
        "name":"Aalborg Handbold", 
        "slug":"aalborg-handbold", 
        "gender":"M", 
        "id":4085, 
        "subTeams":[ 

        ] 
       }, 
       "homeScore":{ 
        "current":27, 
        "period1":13, 
        "normaltime":27 
       }, 
       "awayScore":{ 
        "current":17, 
        "period1":10, 
        "normaltime":17 
       }, 
       "time":{ 

       }, 
       "changes":{ 
        "changeDate":"2017-08-29T20:03:46+00:00", 
        "changes":[ 
        "status.code", 
        "status.description", 
        "status.type", 
        "homeScore.normaltime", 
        "awayScore.normaltime", 
        "homeScore.current" 
        ], 
        "changeTimestamp":1504037026, 
        "hasExpired":true, 
        "hasHomeChanges":false, 
        "hasAwayChanges":false 
       }, 
       "hasHighlights":false, 
       "hasHighlightsStream":false, 
       "id":7552114, 
       "hasStatistics":false, 
       "name":"Skjern Handbold - Aalborg Handbold", 
       "startTime":"18:30", 
       "formatedStartDate":"29.08.2017.", 
       "startTimestamp":1504031400, 
       "statusDescription":"FT", 
       "slug":"aalborg-handbold-skjern-handbold", 
       "uniqueTournamentId":10493, 
       "hasLineups":false, 
       "hasLineupsList":false, 
       "hasOdds":true, 
       "hasLiveOdds":true, 

      } 
     ] 
     } 
     ] 
     } 
    ] 
} 

回答

1

我不确定要理解你的问题。

首先,例子中给出的JSON是不完全有效:

还有就是最后

"hasLiveOdds":true, 

和一些额外的括号后的额外的逗号:

 ] 
    } 
    ] 
    } 

一旦固定,如果我理解你的想法,我发现8场比赛而不是5场。

Whate ver,这里是我的建议:

$decoded = json_decode($result); 
$tournaments = $decoded->tournaments; 
foreach ($tournaments as $tournament) { 
    $comments = $tournament->events; 
    foreach ($comments as $comment) { 
     // Your code 
    } 
} 
+0

谢谢!你完全理解我!是的,如果它帮助我更难,我必须杀死一些括号才能使它合适。再次感谢! –