|  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #9643 Variable member value gets lost from object during use
Submitted: 2001-03-08 20:07 UTC Modified: 2001-03-29 11:32 UTC
From: robsta at bigfoot dot com Assigned:
Status: Not a bug Package: Class/Object related
PHP Version: 4.0.4pl1 OS: Debian 2.2 testing/unstable 2.2.
Private report: No CVE-ID: None
Welcome back! If you're the original bug submitter, here's where you can edit the bug or add additional notes.
If this is not your bug, you can add a comment by following this link.
If this is your bug, but you forgot your password, you can retrieve your password here.
Bug Type:
From: robsta at bigfoot dot com
New email:
PHP Version: OS:


 [2001-03-08 20:07 UTC] robsta at bigfoot dot com
Also running Zend optimiser 1.0. Removing the optimiser makes no difference to the outcome.
The problem should hopefully be outlined in the cut and paste of the code below. There are no other operations occurring on any of the instantiated objects at the time:

$crList  = $this -> getLinkedCRs (); // method returns an array of instantiated objects (CRRecord class).

foreach ($crList as $cr)
  if (!$cr -> okToClose ()) // method returns a Boolean, and sets a Boolean data member in the cr object.
    return false;
foreach ($crList as $cr)
  // Previously set Boolean data member now appears to no longer be set.
  $cr -> okToClose (); // Inserting the method call in again here ensures that the following method call works.
  $cr -> close ($changeBy); // method operates only if the previously set Boolean data member is true.


Add a Patch

Pull Requests

Add a Pull Request


AllCommentsChangesGit/SVN commitsRelated reports
 [2001-03-29 06:14 UTC]
Could you please describe in more detail what happens and
what the problem is?

Also note that when you are using foreach, it operates on
the copy of the data, not the data itself. So if you modify
it, the change won't be made in the original data.
 [2001-03-29 10:07 UTC] robsta at bigfoot dot com
Ah of course :o)
Looking at the code again if I make the first foreach loop become:

foreach ($crList as $index => $cr)
  if ($cr -> okToClose ())
    $crList [$index] = $cr;
    return false;

Then as you say the changes to the copy of the object are 'absorbed' back into the list. Many thanks for that, this isn't a problem after all :o)
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Mon Jul 15 02:01:28 2024 UTC