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

Popular posts from this blog

c# - DetailsView in ASP.Net - How to add another column on the side/add a control in each row? -

javascript - firefox memory leak -

Trying to import CSV file to a SQL Server database using asp.net and c# - can't find what I'm missing -