cowboysdude Posted January 2, 2015 Share Posted January 2, 2015 Ok figured I'd go out and try to write me something for my site that I want and can't seem to be able to find what I want...sooooooooooo I'm trying to create an NFL score 'ticker' and so far I've gotten as far as fetching the xml.. that part works LOL I have been sitting here for a few hours trying to figure out how to do a foreach statement that works... I've hit a brick wall because I just can't seem to figure it out... I have even tried a few I've found in other places but no go... Here is what I have so far: <?php $url="http://www.nfl.com/liveupdate/scorestrip/postseason/ss.xml"; $ch = curl_init(); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_URL, $url); // get the url contents $data = curl_exec($ch); // execute curl request curl_close($ch); $xml = simplexml_load_string($data); print_r($xml); //just keeping this here so I can see it for now ?> I know that part is working as you can see I left the print_r in it temp so I can still see I"m getting what I need... Again the problem is I'm not getting a functional foreach that I can get to work.. I either get nothing back or an error of some kind and trust me I've tried as many as I could find LOL SimpleXMLElement Object ( [gms] => SimpleXMLElement Object ( [@attributes] => Array ( [w] => 18 [y] => 2014 [t] => POST [gd] => 0 [bf] => 0 [bph] => 0 ) [g] => Array ( [0] => SimpleXMLElement Object ( [@attributes] => Array ( [eid] => 2015010301 [gsis] => 56492 [d] => Sat [t] => 8:15 [q] => P [htn] => Pittsburgh Steelers [hnn] => steelers [h] => PIT [hs] => 0 [vtn] => Baltimore Ravens [vnn] => ravens [v] => BAL [vs] => 0 [n] => NBC [rz] => 0 [ga] => [o] => 1 [gt] => WC ) ) [1] => SimpleXMLElement Object ( [@attributes] => Array ( [eid] => 2015010400 [gsis] => 56493 [d] => Sun [t] => 1:05 [q] => P [htn] => Indianapolis Colts [hnn] => colts [h] => IND [hs] => 0 [vtn] => Cincinnati Bengals [vnn] => bengals [v] => CIN [vs] => 0 [n] => CBS [rz] => 0 [ga] => [o] => 2 [gt] => WC ) ) [2] => SimpleXMLElement Object ( [@attributes] => Array ( [eid] => 2015011000 [gsis] => 0 [d] => Jan 10 [t] => 4:35 [q] => P [htn] => New England Patriots [hnn] => patriots [h] => NE [hs] => 0 [vnn] => [v] => TBD [vs] => 0 [n] => NBC [rz] => 0 [ga] => [o] => 3 [gt] => DIV ) ) [3] => SimpleXMLElement Object ( [@attributes] => Array ( [eid] => 2015011101 [gsis] => 0 [d] => Jan 11 [t] => 4:40 [q] => P [htn] => Denver Broncos [hnn] => broncos [h] => DEN [hs] => 0 [vnn] => [v] => TBD [vs] => 0 [n] => CBS [rz] => 0 [ga] => [o] => 4 [gt] => DIV ) ) [4] => SimpleXMLElement Object ( [@attributes] => Array ( [eid] => 2015011801 [gsis] => 0 [d] => Jan 18 [t] => 6:40 [q] => P [hnn] => [h] => TBD [hs] => 0 [vnn] => [v] => TBD [vs] => 0 [n] => CBS [rz] => 0 [ga] => [o] => 5 [gt] => CON ) ) [5] => SimpleXMLElement Object ( [@attributes] => Array ( [eid] => 2015011800 [gsis] => 0 [d] => Jan 18 [t] => 3:05 [q] => P [hnn] => [h] => TBD [hs] => 0 [vnn] => [v] => TBD [vs] => 0 [n] => FOX [rz] => 0 [ga] => [o] => 6 [gt] => CON ) ) [6] => SimpleXMLElement Object ( [@attributes] => Array ( [eid] => 2015011100 [gsis] => 0 [d] => Jan 11 [t] => 1:05 [q] => P [htn] => Green Bay Packers [hnn] => packers [h] => GB [hs] => 0 [vnn] => [v] => TBD [vs] => 0 [n] => FOX [rz] => 0 [ga] => [o] => 7 [gt] => DIV ) ) [7] => SimpleXMLElement Object ( [@attributes] => Array ( [eid] => 2015011001 [gsis] => 0 [d] => Jan 10 [t] => 8:15 [q] => P [htn] => Seattle Seahawks [hnn] => seahawks [h] => SEA [hs] => 0 [vnn] => [v] => TBD [vs] => 0 [n] => FOX [rz] => 0 [ga] => [o] => 8 [gt] => DIV ) ) [8] => SimpleXMLElement Object ( [@attributes] => Array ( [eid] => 2015010401 [gsis] => 56494 [d] => Sun [t] => 4:40 [q] => P [htn] => Dallas Cowboys [hnn] => cowboys [h] => DAL [hs] => 0 [vtn] => Detroit Lions [vnn] => lions [v] => DET [vs] => 0 [n] => FOX [rz] => 0 [ga] => [o] => 9 [gt] => WC ) ) [9] => SimpleXMLElement Object ( [@attributes] => Array ( [eid] => 2015010300 [gsis] => 56491 [d] => Sat [t] => 4:35 [q] => P [htn] => Carolina Panthers [hnn] => panthers [h] => CAR [hs] => 0 [vtn] => Arizona Cardinals [vnn] => cardinals [v] => ARI [vs] => 0 [n] => ESPN [rz] => 0 [ga] => [o] => 10 [gt] => WC ) ) [10] => SimpleXMLElement Object ( [@attributes] => Array ( [eid] => 2015012500 [gsis] => 0 [d] => Jan 25 [t] => 8:00 [q] => P [htn] => Team Cris Carter [hnn] => team carter [h] => CRT [hs] => 0 [vtn] => Team Michael Irvin [vnn] => team irvin [v] => IRV [vs] => 0 [n] => ESPN [rz] => 0 [ga] => [o] => 11 [gt] => PRO ) ) [11] => SimpleXMLElement Object ( [@attributes] => Array ( [eid] => 2015020100 [gsis] => 0 [d] => Feb 1 [t] => 6:30 [q] => P [hnn] => [h] => TBD [hs] => 0 [vnn] => [v] => TBD [vs] => 0 [n] => NBC [rz] => 0 [ga] => [o] => 12 [gt] => SB ) ) ) ) [gds] => SimpleXMLElement Object ( ) ) My object is returning this and that's great... but my foreach skills need a TON of work apparently... I think I've looked at it too much and too long... some suggestions would be VERY much appreciated... Probably a bit big of a project to try on my first real attempt but I just went through the foreach in my tutorial but it's just not working.... What I'm looking to do is output the d, t, htn, vtn, hs, vs... I was trying to just get it to show just one of those but no go... Thanks everyone!! Link to comment https://forums.phpfreaks.com/topic/293599-trying-to-learn-but/ Share on other sites More sharing options...
requinix Posted January 2, 2015 Share Posted January 2, 2015 You should spend some time learning to read dumps like this. SimpleXMLElement Object ($xml is a SimpleXMLElement object [gms] => SimpleXMLElement Objectwith a "gms" child [g] => Arraywhich itself has a "g" child that is an array [0] => SimpleXMLElement Objectof more SimpleXMLElement objects [@attributes] => Arrayand each element in the array has attributes [eid] => 2015010301such as "eid". foreach ($xml->gms->g as $g) { echo (string)$g["eid"]; Link to comment https://forums.phpfreaks.com/topic/293599-trying-to-learn-but/#findComment-1501511 Share on other sites More sharing options...
cowboysdude Posted January 2, 2015 Author Share Posted January 2, 2015 Thank you very much I will try that ... I was coming back to say this is what I have so far.... foreach($xml->gms->g as $games){ echo "Matchup:".$games->htn->hs->vtn->vs->d->t; } But I'm not returning anything ... so I like your explanation Thank you for taking the time to tell me. I will be going over today and buying a course book in addition to the online course I am taking... find this all VERY interesting and I like it! SO on my first line I was on the right track... that makes me very happy!!! Again your explanation is VERY clear and I think I should be able to move forward again! Thank you so very much!!! Link to comment https://forums.phpfreaks.com/topic/293599-trying-to-learn-but/#findComment-1501543 Share on other sites More sharing options...
ginerjm Posted January 2, 2015 Share Posted January 2, 2015 Horning in on requinex's very helpful reply I offer this in case she doesn't respond soon: foreach($xml->gms->g as $games) { echo "Matchup:".$games['htn']," ",$games['hs']," vaersus ",$games['vtn']]," ",$games['vs']," on ",$games['d']," at ",$games['t'],"<br>"; } Link to comment https://forums.phpfreaks.com/topic/293599-trying-to-learn-but/#findComment-1501545 Share on other sites More sharing options...
requinix Posted January 2, 2015 Share Posted January 2, 2015 ginerjm is correct. $games is itself the [0] => SimpleXMLElement Object ( [@attributes] => Array ( [eid] => 2015010301 [gsis] => 56492 [d] => Sat [t] => 8:15 [q] => P [htn] => Pittsburgh Steelers [hnn] => steelers [h] => PIT [hs] => 0 [vtn] => Baltimore Ravens [vnn] => ravens [v] => BAL [vs] => 0 [n] => NBC [rz] => 0 [ga] => [o] => 1 [gt] => WC ) )part of the dump. htn and hs and vtn are all "attributes" of $games, and you access each one individually with array syntax ($games['htn'], etc). <g htn="" hs="" vtn="" />For ->htn->hs->vtn to work, htn would have to be a child of $games, hs a child of htn, vtn a child of hs, and so on. <g> <htn> <hs> <vtn /> </hs> </htn> </g>[edit] Casting to string, as with the (string)$g["eid"] in my earlier reply, is because those values are actually SimpleXMLElement objects. Not strings. They can become strings easily with a cast or when a function tries to treat the value as a string.echo is the latter case. You can echo those values without problems not because they are strings but because each SimpleXMLElement object is being automatically converted to a string. echo gettype($games["htn"]); // objectKeep that in mind because it trips people up when suddenly PHP complains that a value they thought was a string was actually an object the whole time. Link to comment https://forums.phpfreaks.com/topic/293599-trying-to-learn-but/#findComment-1501555 Share on other sites More sharing options...
cowboysdude Posted January 2, 2015 Author Share Posted January 2, 2015 Thank you ALL for the help!!! I have read this like 4 times and will reread it again until I fully understand it!! You all rock and are always so helpful!! Thank you again!!!! Link to comment https://forums.phpfreaks.com/topic/293599-trying-to-learn-but/#findComment-1501560 Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.