ID:               42316
 User updated by:  titerm at lfdj dot com
 Reported By:      titerm at lfdj dot com
 Status:           Bogus
 Bug Type:         SPL related
 Operating System: Windows
 PHP Version:      5.2.3
 New Comment:

I can't access to cvs or svn through my company's firewall.
I see  there is a zip with snaps for windows but the download server is
currently offline for maintenance.

Anyway, with the result you gave me, 'ORG' on both branch, the problem
is not solve for me. ArrayIterator should be able to modify the array.
And at least, it has always been able too until now.


Previous Comments:
------------------------------------------------------------------------

[2007-08-17 00:58:18] [EMAIL PROTECTED]

But I'm using latest CVS. Perhaps you should have tried it too before
reporting already fixed bug.

------------------------------------------------------------------------

[2007-08-16 14:07:40] titerm at lfdj dot com

I did my test on 5.2.3 release on window and solaris.
I don't understand why you say original array is not modified since i'm
using offsetSet function, it should modified $arr and it does.

If i init $arr with $data1 and $data2 like this, only branch one is
altered.

$data1['one'] = 'ORG';
$data2['one'] = 'ORG';
$arr = array (
        'branch1' => $data1,
        'branch2' => $data2,
);

------------------------------------------------------------------------

[2007-08-16 13:47:51] [EMAIL PROTECTED]

Since the iterator does not modify original array, this is the expected
result of your script (and what I get using latest CVS build):

array(2) {
  ["branch1"]=>
  array(1) {
    ["one"]=>
    string(3) "ORG"
  }
  ["branch2"]=>
  array(1) {
    ["one"]=>
    string(3) "ORG"
  }
}


------------------------------------------------------------------------

[2007-08-16 12:11:48] titerm at lfdj dot com

Create a ArrayIterator on branch1. Alter the leaf by using iterator.
Leave on branch2 are affected too.

Simplified reproduce code.

$data['one'] = 'ORG';
$arr = array (
        'branch1' => $data,
        'branch2' => $data,
);
$iterator = new ArrayIterator($arr['branch1']);;
$iterator->offSetSet($iterator->key(), 'ALTER' );
var_dump($arr);

Expected result
array
  'branch1' => 
    array
      'one' => string 'ALTER' (length=5)
  'branch2' => 
    array
      'one' => string 'ORG' (length=3)


Actual result
array
  'branch1' => 
    array
      'one' => string 'ALTER' (length=5)
  'branch2' => 
    array
      'one' => string 'ALTER' (length=5)

------------------------------------------------------------------------

[2007-08-16 10:45:42] [EMAIL PROTECTED]

What if you didn't pay attention to the internals like refcount but
only for actual results? Can you come up with a short and simple example
of what actually doesn't work?

------------------------------------------------------------------------

The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at
    http://bugs.php.net/42316

-- 
Edit this bug report at http://bugs.php.net/?id=42316&edit=1

Reply via email to