2016-08-01 12 views
0

Ich möchte verbessern, wie Sie Daten von einer API abrufen. In diesem Fall möchte ich jede App-ID von der Steam-API abrufen und sie pro Zeile in einer TXT-Datei auflisten. Brauche ich eine unendliche (oder sehr hohe) Schleife (mit ++ nach jeder Iteration), um alle zu holen? Ich meine, von ID 0 mit z. B. einem foreach -loop hochzählen? Ich denke, es wird ewig dauern und klingt sehr nach schlechter Übung.Alles aus JSON API-Array mit PHP

Wie bekomme ich jedes appid {"appid:" n} aus der Antwort von http://api.steampowered.com/ISteamApps/GetAppList/v0001?

<?php 
    //API-URL 
    $url = "http://api.steampowered.com/ISteamApps/GetAppList/v0001"; 
    //Fetch content and decode 
    $game_json = json_decode(curl_get_contents($url), true); 

    //Define file 
    $file = 'steam.txt'; 
    //This is where I'm lost. One massive array {"app": []} with lots of {"appid": n}. 
    //I know how to get one specific targeted line, but how do I get them all? 
    $line = $game_json['applist']['apps']['app']['appid'][every single line, one at a time] 
    //Write to file, one id per line. 
    //Like: 
    //5 
    //7 
    //8 
    //and so on 
    file_put_contents($file, $line, FILE_APPEND); 
?> 

Jede Ausrichtung in die richtige Richtung wird VIEL geschätzt werden. Vielen Dank!

+0

Der erbärmliche Versuch allein impliziert hoffentlich, dass es mir sehr leid tut, dass ich keinen sehr guten Versuch gemacht habe. Weil ich bin. –

+0

Sie brauchen keinen Zähler mit einer foreach-Schleife _need_. – rjdown

+2

Der JSON ist sehr einfach. Einfach die Liste extrahieren! $ line = $ spiel_json ['applist'] ['apps'] ['app']. Das ist es ! – cpugourou

Antwort

2

Sie müssen sich keine Gedanken über Zähler mit foreach Schleifen machen, sie sind entworfen, um durch jedes Element im Objekt zu gehen und zu arbeiten.

$file  = "steam.txt"; 
$game_list = ""; 
$url  = "http://api.steampowered.com/ISteamApps/GetAppList/v0001"; 
$game_json = file_get_contents($url); 
$games  = json_decode($game_json); 

foreach($games->applist->apps->app as $game) { 
    // now $game is a single entry, e.g. {"appid":5,"name":"Dedicated server"} 
    $game_list .= "$game->appid\n"; 
} 

file_put_contents($file, $game_list); 

Jetzt haben Sie eine Textdatei mit 28000 Nummern drin. Herzliche Glückwünsche?