我的脚本大部分时间都在 ,但是在每8次尝试中我都会收到错误。我试着解释一下。这是我得到的错误(或类似的):
{" gameName":" F1 2011"," gameTrailer":" http://cdn.akamai.steamstatic.com/steam/应用/ 81163 / movie_max.webm吨= 1447354814""游戏ID":" 44360"" finalPrice":1499,"流派&# 34;:"赛车"}
{" gameName":" Starscape"" gameTrailer":" HTTP://cdn.akamai.steamstatic.com/steam/apps /900679/movie_max.webm?t=1447351523","gameId":"20700","finalPrice":999,"genres" ;:"动作"}
警告:file_get_contents(http://store.steampowered.com/api/appdetails?appids=400160):无法打开流:HTTP请求失败!在第19行的C:\ xampp \ htdocs \ GoStrap \ game.php
{" gameName":" DRAGON:关于龙的游戏"," gameTrailer":" http://cdn.akamai.steamstatic的.com /蒸汽/应用/ 2038811 / movie_max.webm吨= 1447373449""游戏ID":" 351150"" finalPrice":599,& #34;流派":"冒险"}
{" gameName":" Monster Mash"," gameTrailer":" http://cdn.akamai.steamstatic.com/steam/ ?应用/ 900919 / movie_max.webm吨= 1447352342""游戏ID":" 36210"" finalPrice":449,"流派&# 34;:"休闲"}
我正在制作一个从Steam商店获取随机Steam游戏信息的应用程序。这很简单。
if(!isset())
上面的错误代码表明我在4种情况下得到了我需要的数据,并且错误一次。我只想收到一个json字符串并返回它,并且只设置了$game['gameTrailer']
和$game['final_price']
。
这是php(它不是很好,很善良):
<?php
//Run the script on ajax call
if(isset($_POST)) {
fetchGame();
}
function fetchGame() {
$gameFound = false;
while(!$gameFound) {
////////// ID-picker //////////
$f_contents = file("steam.txt");
$url = $f_contents[mt_rand(0, count($f_contents) - 1)];
$answer = explode('/',$url);
$gameID = $answer[4];
$trimmed = trim($gameID);
////////// Fetch game //////////
$json = file_get_contents('http://store.steampowered.com/api/appdetails?appids='.$trimmed);
$game_json = json_decode($json, true);
if(!isset($game_json[$trimmed]['data']['movies'][0]['webm']['max']) || !isset($game_json[$trimmed]['data']['price_overview']['final'])) {
continue;
}
$gameFound = true;
////////// Store variables //////////
$game['gameName'] = $game_json[$trimmed]['data']['name'];
$game['gameTrailer'] = $game_json[$trimmed]['data']['movies'][0]['webm']['max'];
$game['gameId'] = $trimmed;
$game['free'] = $game_json[$trimmed]['data']['is_free'];
$game['price'] = $game_json[$trimmed]['data']['price_overview']['final'];
$game['genres'] = $game_json[$trimmed]['data']['genres'][0]['description'];
if ($game['free'] == TRUE) {
$game['final_price'] = "Free";
} elseif($game['free'] == FALSE || $game['final_price'] != NULL) {
$game['final_price'] = $game['price'];
} else {
$game['final_price'] = "-";
}
}
////////// Return to AJAX (index.php) //////////
echo
json_encode(array(
'gameName' => $game['gameName'],
'gameTrailer' => $game['gameTrailer'],
'gameId' => $game['gameId'],
'finalPrice' => $game['final_price'],
'genres' => $game['genres'],
))
;
}
?>
任何帮助将不胜感激。比如,为什么会发生这种情况有明显的原因吗?有没有明显更好的方法?当它似乎已经获取了我需要的数据时,为什么它至少重复迭代4次?对不起,如果这篇文章很长,只是试着用缺少的php / json词汇来详细说明。
亲切的问候,约翰
修改
有时它不会返回错误,只返回多个对象:
{&#34; gameName&#34;:&#34; Prime World:Defender&#34;,&#34; gameTrailer&#34;:&#34; http://cdn.akamai.steamstatic.com/蒸汽/应用/ 2028642 / movie_max.webm吨= 1447357836&#34;&#34;游戏ID&#34;:&#34; 235360&#34;&#34; finalPrice&#34;:899,&#34;流派&#34;:&#34;休闲&#34;}
{&#34; gameName&#34;:&#34; Grand Ages:Rome&#34;,&#34; gameTrailer&#34;:&#34; http://cdn.akamai.steamstatic.com/蒸汽/应用/ 5190 / movie_max.webm吨= 1447351683&#34;&#34;游戏ID&#34;:&#34; 23450&#34;&#34; finalPrice&#34;:999,&#34;流派&#34;:&#34;模拟&#34;}