2012-10-27 72 views
0
後如何遍歷陣列

可能重複:
PHP JSON decode - stdClass解碼JSON

我有一個JSON文件像這樣的結構:

[{"key_mappings": "", 
    "screen2_thumb": "http://games.mochiads.com/c/g/siegius-arena/screen2_thumb.png", 
    "video_url": "http://www.youtube.com/watch?v=S7MDxObgJxw", 
    "rating": "Teen", 
    "screen1_thumb": "http://games.mochiads.com/c/g/siegius-arena/screen1_thumb.png", 
    "metascore": 43.63, 
    "height": 500, 
    "screen3_thumb": "http://games.mochiads.com/c/g/siegius-arena/screen3_thumb.jpg", 
    "stage3d": false, 
    "screen3_url": "http://games.mochiads.com/c/g/siegius-arena/screen3.jpg", 
    "recommendation": 5, 
    "coins_revshare_enabled": null, 
    "category": "Fighting", 
    "screen4_thumb": "http://games.mochiads.com/c/g/siegius-arena/screen4_thumb.png", 
    "uuid": "6789c7e3-fd27-345e-85d9-e6a58165ae57", 
    "author": "Juice-Tin", 
    "thumbnail_large_url": "http://games.mochiads.com/c/g/siegius-arena/_thumb_200x200.png", 
    "author_link": "https://www.mochimedia.com/community/profile/Juice-Tin", 
    "controls": 
    [["C", "Item"], 
    ["V", "Spell"], 
    ["X", "Heavy Attack"], 
    ["Z", "Fast Attack"], 
    ["fire", "na"], 
    ["jump", "na"], 
    ["movement", "arrow"]], 
    "languages": ["en"], 
    "swf_url": "http://games.mochiads.com/c/g/siegius-arena/Siegius%20Arena_.swf", 
    "recommended": true, 
    "game_tag": "e0e05c5c5fd1a61b", 
    "achievements_enabled": false, 
    "zip_url": "http://games.mochiads.com/c/g/siegius-arena.zip", 
    "screen1_url": "http://games.mochiads.com/c/g/siegius-arena/screen1.png", 
    "updated": "2012-10-25T15:47:01.953336-08:00", 
    "description": "Fight in arena battles and upgrade your gladiator in this Action-RPG about betrayal and revenge.", 
    "tags": ["siegius", "arena", "gladiator", "rome", "battle", "fight", "upgrade", "rpg", "fans", "en"], 
    "swf_file_size": 10142842, 
    "leaderboard_enabled": false, 
    "game_url": "http://www.mochimedia.com/games/siegius-arena", 
    "screen2_url": "http://games.mochiads.com/c/g/siegius-arena/screen2.png", 
    "slug": "siegius-arena", 
    "categories": ["Action", "Fighting"], 
    "instructions": "", 
    "name": "Siegius Arena", 
    "created": "2012-10-25T12:47:55.080005-08:00", 
    "control_scheme": "{\"C\": \"Item\", \"fire\": \"na\", \"jump\": \"na\", \"V\": \"Spell\", \"X\": \"Heavy Attack\", \"Z\": \"Fast Attack\", \"movement\": \"arrow\"}", 
    "popularity": 0, 
    "feed_approval_created": "2012-10-25T13:30:53.505710-08:00", 
    "coins_enabled": null, 
    "thumbnail_url": "http://games.mochiads.com/c/g/siegius-arena/_thumb_100x100.png", 
    "screen4_url": "http://games.mochiads.com/c/g/siegius-arena/screen4.png", 
    "alternate_url": "", 
    "resolution": "800x500", 
    "width": 800}] 

然後,我有一個將數據添加到MYSQL數據庫的foreach語句:

foreach($result as $key => $value) { 
    if($value) { 
    mysql_query("INSERT INTO `games_db`.`Games` (`title`, `description`, `image`, `category`, `page`, `rating`, `width`, `height`, `tags`) VALUES ('$value->name', '$value->description', '/images/$pageid.jpg', '$category', '$pageid', '$value->rating', '$value->width', '$value->height', '$value->tags')") 
} 

我的問題是,我需要做些什麼來顯示和插入來自JSON文件的標籤?目前,當我運行此頁面時,「標籤」列的數據只是說「數組」。

回答

2

您可以使用json_decode()像這樣:如果你使用

$jsonString = '[{"key_mappings": "", "screen2_thumb": "http://games.mochiads.com/c/g/siegius-arena/screen2_thumb.png", "video_url": "http://www.youtube.com/watch?v=S7MDxObgJxw", "rating": "Teen", "screen1_thumb": "http://games.mochiads.com/c/g/siegius-arena/screen1_thumb.png", "metascore": 43.63, "height": 500, "screen3_thumb": "http://games.mochiads.com/c/g/siegius-arena/screen3_thumb.jpg", "stage3d": false, "screen3_url": "http://games.mochiads.com/c/g/siegius-arena/screen3.jpg", "recommendation": 5, "coins_revshare_enabled": null, "category": "Fighting", "screen4_thumb": "http://games.mochiads.com/c/g/siegius-arena/screen4_thumb.png", "uuid": "6789c7e3-fd27-345e-85d9-e6a58165ae57", "author": "Juice-Tin", "thumbnail_large_url": "http://games.mochiads.com/c/g/siegius-arena/_thumb_200x200.png", "author_link": "https://www.mochimedia.com/community/profile/Juice-Tin", "controls": [["C", "Item"], ["V", "Spell"], ["X", "Heavy Attack"], ["Z", "Fast Attack"], ["fire", "na"], ["jump", "na"], ["movement", "arrow"]], "languages": ["en"], "swf_url": "http://games.mochiads.com/c/g/siegius-arena/Siegius%20Arena_.swf", "recommended": true, "game_tag": "e0e05c5c5fd1a61b", "achievements_enabled": false, "zip_url": "http://games.mochiads.com/c/g/siegius-arena.zip", "screen1_url": "http://games.mochiads.com/c/g/siegius-arena/screen1.png", "updated": "2012-10-25T15:47:01.953336-08:00", "description": "Fight in arena battles and upgrade your gladiator in this Action-RPG about betrayal and revenge.", "tags": ["siegius", "arena", "gladiator", "rome", "battle", "fight", "upgrade", "rpg", "fans", "en"], "swf_file_size": 10142842, "leaderboard_enabled": false, "game_url": "http://www.mochimedia.com/games/siegius-arena", "screen2_url": "http://games.mochiads.com/c/g/siegius-arena/screen2.png", "slug": "siegius-arena", "categories": ["Action", "Fighting"], "instructions": "", "name": "Siegius Arena", "created": "2012-10-25T12:47:55.080005-08:00", "control_scheme": "{\"C\": \"Item\", \"fire\": \"na\", \"jump\": \"na\", \"V\": \"Spell\", \"X\": \"Heavy Attack\", \"Z\": \"Fast Attack\", \"movement\": \"arrow\"}", "popularity": 0, "feed_approval_created": "2012-10-25T13:30:53.505710-08:00", "coins_enabled": null, "thumbnail_url": "http://games.mochiads.com/c/g/siegius-arena/_thumb_100x100.png", "screen4_url": "http://games.mochiads.com/c/g/siegius-arena/screen4.png", "alternate_url": "", "resolution": "800x500", "width": 800}]'; 
$jsonObject = json_decode($jsonString); 
foreach ($jsonObject->tags as $tag) { 
    echo $tag . PHP_EOL; 
    //Do something 
} 

低於PHP 5.2.0,您可以使用JSON PECL Extension

我還要補充一點,你不應使用mysql功能更多 - 他們棄用。請參閱:Why shouldn't I use mysql_* functions in PHP?

2

使用json_decode()

json_decode - 解碼JSON字符串

$jsonObject = json_decode($string); // returns an object 

或:

$jsonArray = json_decode($string, true); // if second argument is true, returned object will be converted to an associative array 

編輯:

爲注:由@nickhar建議你需要PHP 5.2.0或以上使用json_decode()

或者one of the emulations floating around - @mario

+1

注意:您需要PHP 5.2.0或以上使用'json_decode()' – nickhar

+1

@nickhar還是仿真漂浮之一,http://include-once.org/p/upgradephp/ – mario

+0

@馬里奧非常好的一點! – nickhar