2016-05-31 68 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