2016-05-31 98 views
0

所以我有点困惑,想知道有人能帮我一把。我需要通过返回的URL来清除该文件内容。我所得到的返回是:来自url的PHP grep文件内容

{"level":30,"pic":"http:\/\/ddragon.leagueoflegends.com\/cdn\/5.23.1\/img\/profileicon\/716.png","wins":5,"games":{"1":{"champ":412,"outcome":false,"kills":3,"deaths":13,"assists":15},"2":{"champ":53,"outcome":false,"kills":1,"deaths":11,"assists":5},"3":{"champ":91,"outcome":false,"kills":4,"deaths":10,"assists":2},"4":{"champ":67,"outcome":false,"kills":2,"deaths":6,"assists":4}}} 

什么,我想给grep首先是在这种情况下,“30”在水平值,然后profileicon716.png(不怪异/),那么冠军没有值“:”对于第一场比赛,第一场比赛胜利,每场比赛的结果(没有:)的结果(真或假),杀人,死亡和助攻(只是价值)(总共有4场)。我需要把每个值分配给一个依赖于每个游戏的字符串,也就是$ killsgames1 = 3

正如你可以说这很困难,所以我来这里寻求帮助。我通常喜欢自己解决这些问题,而不是用勺子喂食,但这对我来说太让人难以置信了。

+1

它比你想象的其实要简单得多,使用[json_decode(http://php.net /manual/en/function.json-decode.php),你几乎可以去:) – JimL

回答

1

无需到grep或解析,这是JSON:

$array = json_decode($string, true); 

echo $array['level']; 
echo basename($array['pic']); 

foreach($array['games'] as $game) { 
    echo $game['champ']; 
    //etc... 
} 

做一个print_r($array);看结构。

此外,无需分配给其他变量,它们已经在可用的格式,如:

$array['games'][0]['kills'] 
$array['games'][1]['kills'] 
$array['games'][2]['kills'] 
//etc... 
+0

非常感谢这么多!如何在数组中搜索一个值并返回另一个值,即搜索3个杀死值并返回结果(在这种情况下,当游戏丢失时它将是错误的) – user3258734

+0

作为另一个问题发布,作为我更具描述性不知道你的意思。 – AbraCadaver