php - Display children that exist in both XML responses -
still new php , xml , have been trying find solution while.
i trying compare 2 xml returns , display children exist in both of them. specific using steam api go game libraries 2 entered steam id's , want display games owned both users.
instead of doing show games owned user 1.
here part having problems with, $apinyckel api key , not including in post should not shared.
$steamid2 = $_session['steamid2']; $steamid3 = $_session['steamid3']; //user1 $url4 = "http://api.steampowered.com/iplayerservice/getownedgames/v0001/?key=$apinyckel&steamid=$steamid2&format=xml&&include_appinfo=1"; $data4 = file_get_contents($url4); $xml4 = simplexml_load_string($data4); //user2 $url5 = "http://api.steampowered.com/iplayerservice/getownedgames/v0001/?key=$apinyckel&steamid=$steamid3&format=xml&&include_appinfo=1"; $data5 = file_get_contents($url5); $xml5 = simplexml_load_string($data5); foreach ($xml4->games->children() $item2): if ($xml4->games->child->appid === $xml5->games->child->appid) { ?><img src="http://media.steampowered.com/steamcommunity/public/images/apps/<?echo htmlentities($item2->appid);?>/<?echo htmlentities($item2->img_logo_url);?>.jpg"><? } endforeach;
here example of xml structure looks 1 of users.
<response> <game_count>6</game_count> <games> <message> <appid>520</appid> <name>team fortress 2 beta</name> <img_icon_url>e3f595a92552da3d664ad00277fad2107345f743</img_icon_url> <img_logo_url>6f6d22ab0c357d9f02a11f76ff35797e4ccdf19f</img_logo_url> <has_community_visible_stats>true</has_community_visible_stats> </message> <message> <appid>440</appid> <name>team fortress 2</name> <playtime_forever>30659</playtime_forever> <img_icon_url>e3f595a92552da3d664ad00277fad2107345f743</img_icon_url> <img_logo_url>07385eb55b5ba974aebbe74d3c99626bda7920b8</img_logo_url> <has_community_visible_stats>true</has_community_visible_stats> </message> <message> <appid>550</appid> <name>left 4 dead 2</name> <playtime_forever>1822</playtime_forever> <img_icon_url>7d5a243f9500d2f8467312822f8af2a2928777ed</img_icon_url> <img_logo_url>205863cc21e751a576d6fff851984b3170684142</img_logo_url> <has_community_visible_stats>true</has_community_visible_stats> </message> <message> <appid>223530</appid> <name>left 4 dead 2 beta</name> <img_icon_url/> <img_logo_url/> </message> <message> <appid>320</appid> <name>half-life 2: deathmatch</name> <playtime_forever>70</playtime_forever> <img_icon_url>795e85364189511f4990861b578084deef086cb1</img_icon_url> <img_logo_url>6dd9f66771300f2252d411e50739a1ceae9e5b30</img_logo_url> <has_community_visible_stats>true</has_community_visible_stats> </message> <message> <appid>340</appid> <name>half-life 2: lost coast</name> <img_icon_url>795e85364189511f4990861b578084deef086cb1</img_icon_url> <img_logo_url>867cce5c4f37d5ed4aeffb57c60e220ddffe4134</img_logo_url> </message> </games> </response>
any appreciated, thanks!
to array of messages can use xpath:
$xml1 = $xml1->xpath('//message'); $xml2 = $xml2->xpath('//message');
, , loop through array compare them.
edit:
code loop, extract names array , intersect them:
$messages1 = array(); array_map( function($message) use (&$messages1) { $messages1[(string) $message->appid] = (array) $message; }, $xml1 ); $messages2 = array(); array_map( function($message) use (&$messages2) { $messages2[(string) $message->appid] = (array) $message; }, $xml2 ); $result = array_intersect_key( $messages1, $messages2 ); foreach ( $result $value ) { echo '<img src="http://media.steampowered.com/steamcommunity/public/images/apps/'. htmlentities($value['appid']) .'/'. htmlentities($value['img_logo_url']) .'.jpg">'; }
hope helps.
Comments
Post a Comment