Hi,
Friday, August 2, 2002, 11:29:39 PM, you wrote:
JV> Tried to post this to the news group before, but I'm having trouble getting
JV> to my news server from work - hopefully I'm not posting a duplicate.
JV> I think I'm seeing the problem I'm seeing because I'm getting a copy of a
JV> var instead of a reference to it, but I'm not sure the best we to get around
JV> this problem.
JV> In my little sample script, I've got an array of objects. When I use
JV> foreach to loop through the array and make a change to an item, it doesn't
JV> change the object in the array, just the var that I have while I'm in the
JV> foreach loop.
JV> What's the right way to loop through this array if I really want to change
JV> homer's name to marge in this example? The way it is now, I see my echo
JV> saying that I'm changing the name, but when I do the second var_dump, it's
JV> the same as the first var_dump.
JV> Thanks in advance,
JV> Jesse
JV> <?php
JV> class Name {
JV> var $firstName;
JV> var $lastName;
JV> function Name($first, $last) {
JV> $this->firstName = $first;
JV> $this->lastName = $last;
JV> }
JV> }
JV> $names[] = new Name("joe", "shmo");
JV> $names[] = new Name("billy", "bob");
JV> $names[] = new Name("homer", "simpson");
?>>
JV> <html>
JV> <body>
JV> <?php echo var_dump($names) ?>
JV> <br>
JV> <?php
JV> foreach ($names as $name) {
JV> if (strcmp($name->firstName, "homer") == 0) {
JV> echo "changing homer to marge<br>";
JV> $name->firstName = "marge";
JV> break;
JV> }
JV> }
JV> ?>
JV> <?php echo var_dump($names) ?>
JV> <br>
JV> </body>
JV> </html>
This should work:
foreach ($names as $key=>$val) {
if (strcmp($val->firstName, "homer") == 0) {
echo "changing homer to marge<br>";
$names[$key]->firstName = "marge";
break;
}
}
--
regards,
Tom
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php