JHiscock Posted March 5, 2008 Share Posted March 5, 2008 Hi, I'm pretty new to PHP programming, I come from java and I'm trying to do some stuff with OOP. For now I'm trying to create an array of classes, then loop through them printing their values with a foreach loop. My code is as follows: class Answer { private $answerClass; private $answerText; private $answerURL; public function __construct($class, $text, $url) { $this->answerClass = $class; $this->answerText = $text; $this->answerURL = $url; } public function getClass() { return $this->answerClass; } public function getText() { return $this->answerText; } public function getURL() { return $this->answerURL; } } $answerOne = new Answer("Left", "Left", "http://www.google.com"); $answerTwo = new Answer("Right", "Right", "http://www.google.com"); $allAnswers = array(); $allAnswers[] = $answerOne; $allAnswers[] = $answerTwo; foreach ($allAnswers as $answer); { echo ($answer->getClass() . " " . $answer->getText() . " " . $answer->getURL()); } My expectation is that this would output LeftLefthttp://www.google.comRightRighthttp://www.google.com. However it seems to only output RightRighthttp:www.google.com I'm sure I'm doing something stupid here, and I spent about an hour last night going through tutorials etc trying to find out why but no luck. Could someone please explain what's going on? When I print a count($allAnswers) I get 2, which suggests to me I'm doing something wrong with the foreach... Thanks in advance. Quote Link to comment Share on other sites More sharing options...
jedney Posted March 5, 2008 Share Posted March 5, 2008 Try the OOP Help forum. May have better luck. Quote Link to comment Share on other sites More sharing options...
JHiscock Posted March 5, 2008 Author Share Posted March 5, 2008 Ok, I was unsure if I should or not cos I wasn't sure if the problem was related to my OOP or use of the foreach. Quote Link to comment Share on other sites More sharing options...
Dudditz Posted March 5, 2008 Share Posted March 5, 2008 You have a semi-colon in your foreach() foreach ($allAnswers as $answer); { echo ($answer->getClass() . " " . $answer->getText() . " " . $answer->getURL()); } Works this way foreach ($allAnswers as $answer) { echo ($answer->getClass() . " " . $answer->getText() . " " . $answer->getURL()); } Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.