Json_decode() gibt fehlerhaften Inhalt zurück

Halfbax

Erfahrenes Mitglied
Guten Abend :)

Ich habe leider und Problem und keine Lösung dafür, ich lade via file_get_contents() Inhalt runter, diesen json Inhalt decode ich dann mittels der Funktion json_decode(). Nun kommt das Problem. Der Inhalt der durch die letzte Funktion zurück gegeben wird ist abgeschnitten. Das heißt ein Teil des Dokuments fehlt.

Sourcecode
PHP:
    function getLastMatches($id, $region, $apiKey) {
        $data = file_get_contents("https://$region.api.pvp.net/api/lol/euw/v1.3/game/by-summoner/$id/recent?api_key=$apiKey");
       
        $dataDecoded = json_decode($data, true);
       
        for($i = 0; $i < 10; $i++) {
            $e[$i][0] = array( $dataDecoded['games'][$i]['gameMode']);
            $e[$i][1] = array( $dataDecoded['games'][$i]['subType']);
            $e[$i][2] = array( $dataDecoded['games'][$i]['stats']['win']);
            $e[$i][3] = array( $dataDecoded['games'][$i]['stats']['timePlayed']);
            $e[$i][4] = array( $dataDecoded['games'][$i]['stats']['championsKilled']);
            $e[$i][5] = array( $dataDecoded['games'][$i]['stats']['assists']);
            $e[$i][6] = array( $dataDecoded['games'][$i]['stats']['numDeaths']);
        }
       
        return $e;
    }

Fehlermeldung
Code:
Notice: Undefined index: championsKilled in D:\XAMPP\htdocs\riot_api\functions.php on line 48

$data
{
"games": [
{
"fellowPlayers": [
{
"championId": 89,
"teamId": 100,
"summonerId": 39481845
},
{
"championId": 54,
"teamId": 100,
"summonerId": 42827130
},
{
"championId": 51,
"teamId": 200,
"summonerId": 32781300
},
{
"championId": 53,
"teamId": 200,
"summonerId": 24557573
},
{
"championId": 91,
"teamId": 100,
"summonerId": 34521106
},
{
"championId": 72,
"teamId": 100,
"summonerId": 23330235
},
{
"championId": 28,
"teamId": 200,
"summonerId": 41672675
},
{
"championId": 38,
"teamId": 200,
"summonerId": 39541803
},
{
"championId": 42,
"teamId": 100,
"summonerId": 39485157
}
],
"gameType": "MATCHED_GAME",
"stats": {
"totalDamageDealtToChampions": 17024,
"item2": 1011,
"goldEarned": 11202,
"item1": 3255,
"wardPlaced": 19,
"totalDamageTaken": 26576,
"item0": 3001,
"trueDamageDealtPlayer": 1412,
"physicalDamageDealtPlayer": 21416,
"trueDamageDealtToChampions": 1222,
"visionWardsBought": 1,
"killingSprees": 1,
"totalUnitsHealed": 1,
"level": 16,
"magicDamageDealtToChampions": 13946,
"turretsKilled": 1,
"magicDamageDealtPlayer": 62799,
"neutralMinionsKilledEnemyJungle": 1,
"assists": 7,
"magicDamageTaken": 12347,
"numDeaths": 8,
"totalTimeCrowdControlDealt": 559,
"largestMultiKill": 1,
"physicalDamageTaken": 13596,
"sightWardsBought": 9,
"team": 200,
"win": false,
"totalDamageDealt": 85628,
"largestKillingSpree": 3,
"totalHeal": 594,
"item4": 3191,
"item3": 3136,
"item6": 3340,
"item5": 1026,
"minionsKilled": 134,
"timePlayed": 2464,
"physicalDamageDealtToChampions": 1855,
"championsKilled": 6,
"trueDamageTaken": 632,
"goldSpent": 9995,
"neutralMinionsKilled": 1
},
"gameId": 1588720102,
"ipEarned": 74,
"spell1": 4,
"teamId": 200,
"spell2": 14,
"gameMode": "CLASSIC",
"mapId": 1,
"level": 30,
"invalid": false,
"subType": "RANKED_SOLO_5x5",
"createDate": 1406220416223,
"championId": 68
},
{
"fellowPlayers": [
{
"championId": 4,
"teamId": 100,
"summonerId": 25244930
},
{
"championId": 51,
"teamId": 200,
"summonerId": 19844480
},
{
"championId": 75,
"teamId": 200,
"summonerId": 21526397
},
{
"championId": 75,
"teamId": 100,
"summonerId": 50549159
},
{
"championId": 236,
"teamId": 100,
"summonerId": 48875092
}
],
"gameType": "CUSTOM_GAME",
"stats": {
"totalDamageDealtToChampions": 15634,
"item2": 3191,
"barracksKilled": 1,
"goldEarned": 11143,
"item1": 3100,
"wardPlaced": 10,
"item0": 1056,
"totalDamageTaken": 11161,
"trueDamageDealtPlayer": 1444,
"physicalDamageDealtPlayer": 20399,
"trueDamageDealtToChampions": 1244,
"visionWardsBought": 1,
"killingSprees": 2,
"totalUnitsHealed": 1,
"level": 17,
"neutralMinionsKilledYourJungle": 4,
"magicDamageDealtToChampions": 12314,
"turretsKilled": 1,
"magicDamageDealtPlayer": 69900,
"neutralMinionsKilledEnemyJungle": 1,
"assists": 8,
"magicDamageTaken": 4268,
"numDeaths": 4,
"totalTimeCrowdControlDealt": 299,
"largestMultiKill": 1,
"physicalDamageTaken": 5920,
"sightWardsBought": 5,
"team": 200,
"win": true,
"totalDamageDealt": 91743,
"largestKillingSpree": 2,
"totalHeal": 928,
"item4": 3089,
"item3": 3255,
"item6": 3340,
"item5": 2039,
"minionsKilled": 148,
"timePlayed": 1771,
"physicalDamageDealtToChampions": 2076,
"championsKilled": 5,
"trueDamageTaken": 972,
"goldSpent": 10230,
"neutralMinionsKilled": 5
},
"gameId": 1588501286,
"ipEarned": 10,
"spell1": 4,
"teamId": 200,
"spell2": 14,
"gameMode": "CLASSIC",
"mapId": 1,
"level": 30,
"invalid": false,
"subType": "NONE",
"createDate": 1406217331959,
"championId": 4
},
{
"fellowPlayers": [
{
"championId": 10,
"teamId": 100,
"summonerId": 25244930
},
{
"championId": 18,
"teamId": 200,
"summonerId": 19844480
},
{
"championId": 134,
"teamId": 200,
"summonerId": 21526397
},
{
"championId": 84,
"teamId": 100,
"summonerId": 50549159
},
{
"championId": 119,
"teamId": 100,
"summonerId": 48875092
}
],
"gameType": "CUSTOM_GAME",
"stats": {
"totalDamageDealtToChampions": 13266,
"goldEarned": 8403,
"item2": 3070,
"item1": 3027,
"wardPlaced": 11,
"totalDamageTaken": 18587,
"item0": 3255,
"trueDamageDealtPlayer": 1008,
"physicalDamageDealtPlayer": 11695,
"trueDamageDealtToChampions": 880,
"visionWardsBought": 2,
"totalUnitsHealed": 1,
"largestCriticalStrike": 437,
"level": 15,
"neutralMinionsKilledYourJungle": 3,
"magicDamageDealtToChampions": 11367,
"magicDamageDealtPlayer": 52692,
"assists": 7,
"magicDamageTaken": 8796,
"numDeaths": 4,
"totalTimeCrowdControlDealt": 2261,
"largestMultiKill": 1,
"physicalDamageTaken": 9159,
"sightWardsBought": 5,
"win": true,
"team": 200,
"totalDamageDealt": 65396,
"totalHeal": 8503,
"item4": 1052,
"item3": 1028,
"item6": 3340,
"item5": 1052,
"minionsKilled": 107,
"timePlayed": 1614,
"physicalDamageDealtToChampions": 1019,
"championsKilled": 2,
"trueDamageTaken": 632,
"neutralMinionsKilled": 3,
"goldSpent": 7270
},
"gameId": 1588500684,
"ipEarned": 45,
"spell1": 4,
"teamId": 200,
"spell2": 14,
"gameMode": "CLASSIC",
"mapId": 1,
"level": 30,
"invalid": false,
"subType": "NONE",
"createDate": 1406215307372,
"championId": 34
},
{
"fellowPlayers": [
{
"championId": 133,
"teamId": 100,
"summonerId": 26542295
},
{
"championId": 18,
"teamId": 200,
"summonerId": 41217306
},
{
"championId": 76,
"teamId": 200,
"summonerId": 25244930
},
{
"championId": 8,
"teamId": 100,
"summonerId": 50549159
},
{
"championId": 134,
"teamId": 100,
"summonerId": 48875092
}
],
"gameType": "CUSTOM_GAME",
"stats": {
"totalDamageDealtToChampions": 22648,
"item2": 3135,
"goldEarned": 16713,
"item1": 3157,
"wardPlaced": 18,
"totalDamageTaken": 22728,
"item0": 3089,
"trueDamageDealtPlayer": 47521,
"physicalDamageDealtPlayer": 28736,
"trueDamageDealtToChampions": 4154,
"visionWardsBought": 1,
"killingSprees": 2,
"totalUnitsHealed": 1,
"level": 18,
"neutralMinionsKilledYourJungle": 15,
"magicDamageDealtToChampions": 17523,
"turretsKilled": 1,
"magicDamageDealtPlayer": 92586,
"neutralMinionsKilledEnemyJungle": 7,
"assists": 7,
"magicDamageTaken": 9338,
"numDeaths": 3,
"totalTimeCrowdControlDealt": 147,
"largestMultiKill": 1,
"physicalDamageTaken": 13159,
"sightWardsBought": 5,
"team": 200,
"win": true,
"totalDamageDealt": 168845,
"largestKillingSpree": 7,
"totalHeal": 6601,
"item4": 3255,
"item3": 3001,
"item6": 3340,
"item5": 1011,
"minionsKilled": 182,
"timePlayed": 2939,
"physicalDamageDealtToChampions": 970,
"championsKilled": 12,
"trueDamageTaken": 230,
"goldSpent": 15585,
"neutralMinionsKilled": 22
},
"gameId": 1587230136,
"ipEarned": 83,
"spell1": 4,
"teamId": 200,
"spell2": 14,
"gameMode": "CLASSIC",
"mapId": 1,
"level": 30,
"invalid": false,
"subType": "NONE",
"createDate": 1406211990851,
"championId": 103
},
{
"fellowPlayers": [
{
"championId": 56,
"teamId": 100,
"summonerId": 26542295
},
{
"championId": 18,
"teamId": 200,
"summonerId": 41217306
},
{
"championId": 80,
"teamId": 100,
"summonerId": 25244930
},
{
"championId": 115,
"teamId": 100,
"summonerId": 36690585
},
{
"championId": 75,
"teamId": 200,
"summonerId": 50549159
},
{
"championId": 81,
"teamId": 100,
"summonerId": 48875092
}
],
"gameType": "CUSTOM_GAME",
"stats": {
"totalDamageDealtToChampions": 28501,
"item2": 3135,
"goldEarned": 11641,
"item1": 3255,
"wardPlaced": 21,
"totalDamageTaken": 24551,
"item0": 3128,
"trueDamageDealtPlayer": 1372,
"physicalDamageDealtPlayer": 29992,
"trueDamageDealtToChampions": 986,
"killingSprees": 3,
"totalUnitsHealed": 1,
"level": 18,
"doubleKills": 1,
"neutralMinionsKilledYourJungle": 7,
"magicDamageDealtToChampions": 21412,
"magicDamageDealtPlayer": 52096,
"assists": 4,
"magicDamageTaken": 10089,
"numDeaths": 5,
"totalTimeCrowdControlDealt": 151,
"largestMultiKill": 2,
"physicalDamageTaken": 13567,
"sightWardsBought": 6,
"team": 200,
"win": false,
"totalDamageDealt": 83461,
"largestKillingSpree": 5,
"totalHeal": 3255,
"item4": 1026,
"item3": 3057,
"item6": 3340,
"item5": 3191,
"minionsKilled": 99,
"timePlayed": 2405,
"physicalDamageDealtToChampions": 6102,
"championsKilled": 13,
"trueDamageTaken": 894,
"goldSpent": 11830,
"neutralMinionsKilled": 7
},
"gameId": 1587229572,
"ipEarned": 0,
"spell1": 4,
"teamId": 200,
"spell2": 14,
"gameMode": "CLASSIC",
"mapId": 1,
"level": 30,
"invalid": false,
"subType": "NONE",
"createDate": 1406208373847,
"championId": 105
},
{
"fellowPlayers": [
{
"championId": 25,
"teamId": 200,
"summonerId": 26542295
},
{
"championId": 84,
"teamId": 100,
"summonerId": 53310254
},
{
"championId": 42,
"teamId": 200,
"summonerId": 25244930
},
{
"championId": 19,
"teamId": 100,
"summonerId": 22479616
},
{
"championId": 74,
"teamId": 200,
"summonerId": 44839383
},
{
"championId": 8,
"teamId": 200,
"summonerId": 50549159
},
{
"championId": 44,
"teamId": 100,
"summonerId": 35297150
},
{
"championId": 222,
"teamId": 100,
"summonerId": 45088633
},
{
"championId": 64,
"teamId": 100,
"summonerId": 49766969
}
],
"gameType": "MATCHED_GAME",
"stats": {
"totalDamageDealtToChampions": 6153,
"goldEarned": 4610,
"item2": 3255,
"item1": 1080,
"wardPlaced": 4,
"totalDamageTaken": 13237,
"item0": 1056,
"trueDamageDealtPlayer": 6360,
"physicalDamageDealtPlayer": 13397,
"totalUnitsHealed": 1,
"level": 10,
"neutralMinionsKilledYourJungle": 43,
"magicDamageDealtToChampions": 5065,
"magicDamageDealtPlayer": 29928,
"neutralMinionsKilledEnemyJungle": 2,
"assists": 1,
"magicDamageTaken": 3980,
"numDeaths": 6,
"totalTimeCrowdControlDealt": 69,
"largestMultiKill": 1,
"physicalDamageTaken": 9003,
"win": false,
"team": 200,
"totalDamageDealt": 49686,
"totalHeal": 640,
"item3": 3191,
"item6": 3340,
"minionsKilled": 5,
"timePlayed": 1274,
"physicalDamageDealtToChampions": 1087,
"championsKilled": 2,
"trueDamageTaken": 254,
"neutralMinionsKilled": 45,
"goldSpent": 3975
},
"gameId": 1588096120,
"ipEarned": 51,
"spell1": 4,
"teamId": 200,
"spell2": 11,
"gameMode": "CLASSIC",
"mapId": 1,
"level": 30,
"invalid": false,
"subType": "NORMAL",
"createDate": 1406204717932,
"championId": 131
},
{
"fellowPlayers": [
{
"championId": 64,
"teamId": 200,
"summonerId": 22284925
},
{
"championId": 58,
"teamId": 100,
"summonerId": 48777097
},
{
"championId": 99,
"teamId": 200,
"summonerId": 30168748
},
{
"championId": 67,
"teamId": 200,
"summonerId": 22362690
},
{
"championId": 55,
"teamId": 100,
"summonerId": 20892749
},
{
"championId": 60,
"teamId": 100,
"summonerId": 58369326
},
{
"championId": 201,
"teamId": 100,
"summonerId": 37663858
},
{
"championId": 122,
"teamId": 200,
"summonerId": 36650140
},
{
"championId": 51,
"teamId": 100,
"summonerId": 26570347
}
],
"gameType": "MATCHED_GAME",
"stats": {
"totalDamageDealtToChampions": 13066,
"goldEarned": 9767,
"item2": 3068,
"item1": 3401,
"wardPlaced": 36,
"totalDamageTaken": 32157,
"item0": 3265,
"trueDamageDealtPlayer": 3492,
"physicalDamageDealtPlayer": 8231,
"visionWardsBought": 3,
"totalUnitsHealed": 5,
"level": 17,
"magicDamageDealtToChampions": 9878,
"magicDamageDealtPlayer": 25955,
"assists": 14,
"magicDamageTaken": 18072,
"numDeaths": 7,
"totalTimeCrowdControlDealt": 172,
"largestMultiKill": 1,
"physicalDamageTaken": 13840,
"sightWardsBought": 1,
"win": false,
"team": 200,
"totalDamageDealt": 37679,
"totalHeal": 3384,
"item3": 3082,
"item6": 3362,
"minionsKilled": 42,
"item5": 2049,
"timePlayed": 2379,
"wardKilled": 2,
"physicalDamageDealtToChampions": 3188,
"championsKilled": 2,
"trueDamageTaken": 244,
"goldSpent": 9245
},
"gameId": 1588018397,
"ipEarned": 71,
"spell1": 4,
"teamId": 200,
"spell2": 3,
"gameMode": "CLASSIC",
"mapId": 1,
"level": 30,
"invalid": false,
"subType": "RANKED_SOLO_5x5",
"createDate": 1406200461228,
"championId": 89
},
{
"fellowPlayers": [
{
"championId": 75,
"teamId": 200,
"summonerId": 39330605
},
{
"championId": 60,
"teamId": 200,
"summonerId": 29726088
},
{
"championId": 126,
"teamId": 200,
"summonerId": 30308502
},
{
"championId": 121,
"teamId": 100,
"summonerId": 20419412
},
{
"championId": 104,
"teamId": 200,
"summonerId": 19233904
},
{
"championId": 36,
"teamId": 100,
"summonerId": 25490885
},
{
"championId": 89,
"teamId": 200,
"summonerId": 25154268
},
{
"championId": 18,
"teamId": 100,
"summonerId": 34538825
},
{
"championId": 412,
"teamId": 100,
"summonerId": 35137696
}
],
"gameType": "MATCHED_GAME",
"stats": {
"totalDamageDealtToChampions": 38673,
"item2": 3151,
"goldEarned": 13973,
"item1": 3255,
"wardPlaced": 17,
"totalDamageTaken": 25201,
"item0": 3116,
"trueDamageDealtPlayer": 872,
"physicalDamageDealtPlayer": 13362,
"trueDamageDealtToChampions": 872,
"visionWardsBought": 2,
"killingSprees": 2,
"totalUnitsHealed": 1,
"level": 18,
"neutralMinionsKilledYourJungle": 8,
"magicDamageDealtToChampions": 36582,
"turretsKilled": 1,
"magicDamageDealtPlayer": 84685,
"neutralMinionsKilledEnemyJungle": 2,
"assists": 15,
"magicDamageTaken": 6257,
"numDeaths": 7,
"totalTimeCrowdControlDealt": 344,
"largestMultiKill": 1,
"physicalDamageTaken": 18589,
"sightWardsBought": 9,
"team": 100,
"win": true,
"totalDamageDealt": 98919,
"largestKillingSpree": 3,
"totalHeal": 3970,
"item4": 1026,
"item3": 3089,
"item6": 3362,
"minionsKilled": 92,
"timePlayed": 2620,
"wardKilled": 2,
"physicalDamageDealtToChampions": 1218,
"championsKilled": 8,
"trueDamageTaken": 355,
"goldSpent": 13355,
"neutralMinionsKilled": 10
},
"gameId": 1587709307,
"ipEarned": 117,
"spell1": 4,
"teamId": 100,
"spell2": 14,
"gameMode": "CLASSIC",
"mapId": 1,
"level": 30,
"invalid": false,
"subType": "RANKED_SOLO_5x5",
"createDate": 1406158432539,
"championId": 63
},
{
"fellowPlayers": [
{
"championId": 51,
"teamId": 200,
"summonerId": 21721365
},
{
"championId": 75,
"teamId": 200,
"summonerId": 35948635
},
{
"championId": 134,
"teamId": 100,
"summonerId": 26611077
},
{
"championId": 28,
"teamId": 200,
"summonerId": 38649675
},
{
"championId": 133,
"teamId": 100,
"summonerId": 24487879
},
{
"championId": 76,
"teamId": 100,
"summonerId": 32341217
},
{
"championId": 53,
"teamId": 200,
"summonerId": 46857987
},
{
"championId": 89,
"teamId": 100,
"summonerId": 19728850
},
{
"championId": 254,
"teamId": 100,
"summonerId": 25924023
}
],
"gameType": "MATCHED_GAME",
"stats": {
"totalDamageDealtToChampions": 21579,
"item2": 3151,
"goldEarned": 8151,
"item1": 3255,
"wardPlaced": 13,
"totalDamageTaken": 18490,
"item0": 1056,
"trueDamageDealtPlayer": 614,
"physicalDamageDealtPlayer": 8396,
"trueDamageDealtToChampions": 614,
"visionWardsBought": 1,
"killingSprees": 2,
"totalUnitsHealed": 1,
"level": 13,
"doubleKills": 1,
"neutralMinionsKilledYourJungle": 2,
"magicDamageDealtToChampions": 20077,
"magicDamageDealtPlayer": 47392,
"assists": 5,
"magicDamageTaken": 6705,
"numDeaths": 9,
"totalTimeCrowdControlDealt": 30,
"largestMultiKill": 2,
"physicalDamageTaken": 10656,
"sightWardsBought": 7,
"team": 200,
"win": false,
"totalDamageDealt": 56402,
"largestKillingSpree": 3,
"totalHeal": 567,
"item3": 1058,
"item6": 3340,
"minionsKilled": 94,
"timePlayed": 1781,
"wardKilled": 1,
"physicalDamageDealtToChampions": 887,
"championsKilled": 6,
"trueDamageTaken": 1129,
"goldSpent": 7525,
"neutralMinionsKilled": 2
},
"gameId": 1586694699,
"ipEarned": 57,
"spell1": 4,
"teamId": 200,
"spell2": 14,
"gameMode": "CLASSIC",
"mapId": 1,
"level": 30,
"invalid": false,
"subType": "RANKED_SOLO_5x5",
"createDate": 1406124748448,
"championId": 63
},
{
"fellowPlayers": [
{
"championId": 51,
"teamId": 200,
"summonerId": 26542295
},
{
"championId": 101,
"teamId": 200,
"summonerId": 21521994
},
{
"championId": 7,
"teamId": 200,
"summonerId": 21384687
},
{
"championId": 222,
"teamId": 100,
"summonerId": 30806880
},
{
"championId": 26,
"teamId": 100,
"summonerId": 27119793
},
{
"championId": 10,
"teamId": 100,
"summonerId": 25217831
},
{
"championId": 75,
"teamId": 200,
"summonerId": 44613583
},
{
"championId": 126,
"teamId": 100,
"summonerId": 28892773
},
{
"championId": 15,
"teamId": 100,
"summonerId": 19275706
}
],
"gameType": "MATCHED_GAME",
"stats": {
"totalDamageDealtToChampions": 28947,
"item2": 3165,
"goldEarned": 14017,
"item1": 1001,
"totalDamageTaken": 9443,
"item0": 3098,
"trueDamageDealtPlayer": 138,
"physicalDamageDealtPlayer": 5185,
"trueDamageDealtToChampions": 138,
"killingSprees": 2,
"totalUnitsHealed": 1,
"level": 18,
"doubleKills": 1,
"magicDamageDealtToChampions": 27567,
"turretsKilled": 1,
"magicDamageDealtPlayer": 37310,
"assists": 29,
"magicDamageTaken": 3173,
"numDeaths": 2,
"totalTimeCrowdControlDealt": 219,
"largestMultiKill": 2,
"physicalDamageTaken": 6270,
"team": 200,
"win": true,
"totalDamageDealt": 42634,
"largestKillingSpree": 8,
"totalHeal": 3130,
"item4": 3089,
"item3": 3089,
"item5": 3135,
"minionsKilled": 13,
"timePlayed": 1466,
"physicalDamageDealtToChampions": 1241,
"championsKilled": 11,
"goldSpent": 12465
},
"gameId": 1586631990,
"ipEarned": 220,
"spell1": 4,
"teamId": 200,
"spell2": 14,
"gameMode": "ARAM",
"mapId": 12,
"level": 30,
"invalid": false,
"subType": "ARAM_UNRANKED_5x5",
"createDate": 1406120150570,
"championId": 99
}
],
"summonerId": 22339544
}

Ich hoffe ihr könnt mir da behilflich sein :)

Liebe Grüße
Halfbax
 
Okay, ich muss mich korrigieren. Ich denke ich habe den Fehler gefunden. Es handelt sich hierbei um einen Datansatz für die Endergebnise von den letzten 10 Spielen. Davon habe ich anscheinend ein Spiel mit 0 Kills beendet. Nun ist die Frage wie kann ich das Ganze so umgehen, dass er statt der Notiz das leere Feld mit einer Null ersetzt.

Wie findet ihr diesen Ansatz?
PHP:
  function getLastMatches($id, $region, $apiKey) {
     $data = file_get_contents("https://$region.api.pvp.net/api/lol/euw/v1.3/game/by-summoner/$id/recent?api_key=$apiKey");
     
     $dataDecoded = json_decode($data, true);
     
     for($i = 0; $i < 10; $i++) {
       $e[$i][0] = array( $dataDecoded['games'][$i]['gameMode']);
       $e[$i][1] = array( $dataDecoded['games'][$i]['subType']);
       
       if( $dataDecoded['games'][$i]['stats']['win'] == false ) {
         $e[$i][2] = array(0);
       } else {
         $e[$i][2] = array(1);
       }
       $e[$i][3] = array( $dataDecoded['games'][$i]['stats']['timePlayed']);
       
       if( empty($dataDecoded['games'][$i]['stats']['championsKilled']) ) {
         $e[$i][4] = array(0);
       } else {
         $e[$i][4] = array( $dataDecoded['games'][$i]['stats']['championsKilled']);   
       }
       
       if( empty($dataDecoded['games'][$i]['stats']['assists']) ) {
         $e[$i][5] = array(0);
       } else {
         $e[$i][5] = array( $dataDecoded['games'][$i]['stats']['assists']);   
       }

       if( empty($dataDecoded['games'][$i]['stats']['numDeaths']) ) {
         $e[$i][6] = array(0);
       } else {
         $e[$i][6] = array( $dataDecoded['games'][$i]['stats']['numDeaths']);   
       }       
     }
     
     return $e;
   }

Gibt es vielleicht einen saubere und übersichtlichere Methode dies zu gewerkstelligen?

Liebe Grüße
Halfbax
 
Du könntest statt mit einer Zähl-Schleife mit einer foreach arbeiten. Wenn du unbedingt 10 Ergebnisse darstellen musst (obwohl es keine 10 gibt), müsstest du mittels isset($dataDecoded['games'][$i]) prüfen, ob es den n'ten Datensatz überhaupt gibt. Also den kompletten Block innerhalb der for-Schleife in eine if(isset(...)) packen und im else-Fall dann $e[$i][0] - [6] auf leer setzen.
 
Ich muss dich da leider bei deinem ersten Punkt verbessern, es gibt immer Datensätze. Nur wenn der jeweilige Datensatz 0 ist, wird er bei einigen aus Speicherplatz spartechnischen Gründen weg gelassen.

Erfindet das die Community/du als eine saubere Lösung?

Liebe Grüße
Halfbax
 
Sorry, dann habe ich dein Posting nicht richtig gelesen bzw. verstanden.

Nein, ich finde das keine saubere Lösung. Ein Protokoll ist ein Protokoll. Und da wird nicht einfach was unterschlagen, nur weil es 0 ist. Zero ist nicht Null. Sauber ist das nicht. Ich würde auf einer 0 als Element-Inhalt bestehen.
 
Da habe ich leider keinen Einfluss drauf, die Daten werden durch dritte erstellt.

Magst du mir vielleicht helfen bei der foreach-Schleife da ich derzeit auf die $i klar komme. Ich versteh derzeit nicht, wie ich die $i für den Index hochgezählt bekomme ^^

Liebe Grüße
Halfbax
 
Was mich stört, wenn ich den Code so ansehe, du greifst x-mal auf $dataDecoded['games'][$i] zu. Da PHP Referenzen kennt, wäre es doch möglich, statt den ganzen $dataDecoded['games'][$i]-Zugriffen einmal eine Referenz auf das Element einzubauen und dann damit zu arbeiten. Ansonsten hast du wohl die evtuellen nichtvorhandenen Elemente damit abgefrühstückt. Aber ich bleibe dabei, dass es eigentlich nicht ok ist, dass die Elemente einfach fehlen, nur wegen 3 Byte pro Element. Hat wahrscheinlich ein BWLer seine Finger im Spiel gehabt, als die Schnittstelle entworfen wurde. ;-)

Und eine foreach ist in so fern nicht sinnvoll, da du die Anzahl ja begrenzen willst. Oder ist sicher gestellt, dass da immer nur 10 zurück kommen?
 
Ja es ist hierbei sichergestellt, dass es bei 10 Datensätze bleibt.

Liebe Grüße
Halfbax
 
Am besten du vergibst test-halber mal einen anderen Namen für deine Version rufst beide auf und vergleichst, ob jeweils das gleiche zurück kommt:

PHP:
function getLastMatches($id, $region, $apiKey) {
   $data = file_get_contents ( "https://$region.api.pvp.net/api/lol/euw/v1.3/game/by-summoner/$id/recent?api_key=$apiKey" );
  
   $dataDecoded = json_decode ( $data, true );
  
   $i = 0;
   foreach ($dataDecoded ['games'] as $game)
   {
     $e[$i++] = array(
       array( $game['gameMode'] ),
       array( $game['subType'] ),
       array( $game['stats']['win'] == false ? 0 : 1 ),
       array( $game['stats']['timePlayed'] ),
       array( isset( $game['stats']['championsKilled'] ) ? $game['stats']['championsKilled'] : 0 ),
       array( isset( $game['stats']['assists'] ) ? $game['stats']['assists'] : 0 ),
       array( isset( $game['stats']['numDeaths'] ) ? $game['stats']['numDeaths'] : 0 )
     );
   }
  
   return $e;
}

Dann habe ich noch eine Frage: Warum wird in dem Array für jedes Spiel noch mal für alle Elemente ein Array gebraucht, wo immer nur ein Unterelement drin steht? Ist das Absicht oder unglücklicher Zufall? Ich würde, wenn es ohnehin nur ein Element geben kann (also z.B. nur ein GameMode pro Game) kein Array sondern ein flaches Element verwenden. In dem Fall würde ich die array()-Calls rausnehmen:

PHP:
<?php
function getLastMatches($id, $region, $apiKey) {
   $data = file_get_contents ( "https://$region.api.pvp.net/api/lol/euw/v1.3/game/by-summoner/$id/recent?api_key=$apiKey" );
  
   $dataDecoded = json_decode ( $data, true );
  
   $i = 0;
   foreach ($dataDecoded ['games'] as $game)
   {
     $e[$i++] = array(
       $game['gameMode'],
       $game['subType'],
       $game['stats']['win'] == false ? 0 : 1,
       $game['stats']['timePlayed'],
       isset( $game['stats']['championsKilled'] ) ? $game['stats']['championsKilled'] : 0,
       isset( $game['stats']['assists'] ) ? $game['stats']['assists'] : 0,
       isset( $game['stats']['numDeaths'] ) ? $game['stats']['numDeaths'] : 0
     );
   }
  
   return $e;
}

Aber das Ergebnis hat dann natürlich eine andere Struktur. Musst du entscheiden.

Edit: Eigentlich braucht es nicht mal den Zähler $i:

PHP:
<?php
function getLastMatches($id, $region, $apiKey) {
   $data = file_get_contents ( "https://$region.api.pvp.net/api/lol/euw/v1.3/game/by-summoner/$id/recent?api_key=$apiKey" );
   
   $dataDecoded = json_decode ( $data, true );
   
   foreach ($dataDecoded ['games'] as $game)
   {
     $e[] = array(
       $game['gameMode'],
       $game['subType'],
       $game['stats']['win'] == false ? 0 : 1,
       $game['stats']['timePlayed'],
       isset( $game['stats']['championsKilled'] ) ? $game['stats']['championsKilled'] : 0,
       isset( $game['stats']['assists'] ) ? $game['stats']['assists'] : 0,
       isset( $game['stats']['numDeaths'] ) ? $game['stats']['numDeaths'] : 0
     );
   }
   
   return $e;
}
 
Zurück