redwall_hp Posted July 11, 2008 Share Posted July 11, 2008 Conventional PHP wisdom states that PHP variables can't start with a number or any character other than an alphabetical letter. But when you deal with things objects returned from database queries, parsed API XML results, etc, you sometimes end up with something like this:echo $doc->resultset_web->result->0->title;What the heck are you supposed to do then? It returns a "Parse error: syntax error, unexpected T_LNUMBER, expecting T_STRING or T_VARIABLE or '{' or '$' in..." So obviously the first thing I tried was to put curly braces around the zero like this: {0}. Nope. Now the echo doesn't output anything.What's the best thing to do in scenarios like this? I've run into this problem twice in as many days.Here's the object structure (via print_r) that I had in one of the scenarios (mainly just playing around with the new Yahoo BOSS API, instead of working on something important, like the other project I had an issue with). SimpleXMLElement Object( [@attributes] => Array ( [responsecode] => 200 ) [nextpage] => /ysearch/web/v1/iphone?appid=(APIKEY-REMOVED)&format=xml&start=10 [resultset_web] => SimpleXMLElement Object ( [@attributes] => Array ( [count] => 10 [start] => 0 [totalhits] => 33374083 [deephits] => 983000000 ) [result] => Array ( [0] => SimpleXMLElement Object ( [abstract] => iPhone is a revolutionary new mobile phone that allows you to make a call by ... Guided Tour Get a closer look at all the features of iPhone. Watch video ... [clickurl] => http://us.lrd.yahoo.com/_ylc=X3oDMTRrOTJsMHJkBGFwcGlkAzBPZlNvdUhWMzRHcjF2YXA3UWlCaVNqM2RRTVRGVHBwbGtoVnBybHNaNXpONG90clBzYklUbzdFTVpuanIxUl9PUS0tBHBvcwMwBHNlcnZpY2UDWVNlYXJjaFdlYgRzcmNwdmlkA0dFYUJIVVNPNXE4RWt5amt0Q2E0TGdEWVN0QVFWMGgzazRBQUJkX1o-/SIG=111fl1onm/**http%3A//www.apple.com/iphone/ [date] => 2008/06/09 [dispurl] => www.apple.com/iphone [size] => 28640 [title] => Apple - iPhone [url] => http://www.apple.com/iphone/ )*SNIP* Link to comment Share on other sites More sharing options...
boen_robot Posted July 11, 2008 Share Posted July 11, 2008 If you look closely, result is an array, so what you need instead is: echo $doc->resultset_web->result[0]->title; XML doesn't allow names of elements and attributes to start with a number, and most other APIs that allow such dynamic object creation also don't allow numbers as a first character. Link to comment Share on other sites More sharing options...
Jesdisciple Posted July 11, 2008 Share Posted July 11, 2008 EDIT: [removed] Lol, that would have been a good idea if my assumptions had been correct... Link to comment Share on other sites More sharing options...
redwall_hp Posted July 11, 2008 Author Share Posted July 11, 2008 Ah, thanks. I missed the array there. It seems to work fine.I'm a little new to OOP with PHP. I've read up on it a bit, but haven't messed with it much yet (though I'm fairly experienced with PHP). Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.