ID:               39202
 Updated by:       [EMAIL PROTECTED]
 Reported By:      cpriest at warpmail dot net
-Status:           Open
+Status:           Bogus
 Bug Type:         Arrays related
 Operating System: Apache 2.0.55
 PHP Version:      5.1.6
 New Comment:

See my explanation in the previous message.
No bug here.


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

[2006-10-20 00:18:12] cpriest at warpmail dot net

Expected:
------------------------------------------
Array
(
    [Test] => myClassA Object
        (
            [Name] => Object 3
        )

    [Test2] => myClassA Object
        (
            [Name] => Object 2
        )

)
Array
(
    [Test] => myClassA Object
        (
            [Name] => Object 3
        )

    [Test2] => myClassA Object
        (
            [Name] => Object 2
        )

)


Actual:
--------------------------------------------
Array
(
    [Test] => myClassA Object
        (
            [Name] => Object 1
        )

    [Test2] => myClassA Object
        (
            [Name] => Object 2
        )

)
Array
(
    [Test] => myClassA Object
        (
            [Name] => Object 3
        )

    [Test2] => myClassA Object
        (
            [Name] => Object 2
        )

)

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

[2006-10-19 21:11:57] [EMAIL PROTECTED]

Can't reproduce.
After the first print_r() I see "Object 1" (because the object haven't
been changed yet), after ther second call I get "Object 3", which is
expected too.

Hint: when we say "expected and actual results" we usually mean
"copy/paste what you see and also attach what you expected to see", not
a "I expect to see ..".

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

[2006-10-19 20:56:01] cpriest at warpmail dot net

Description:
------------
References in temporary tables de-reference their references upon
crossing function boundaries

Reproduce code:
---------------
<?php
  class myClassA {
          public $Name = '';
          function __construct($Name) { $this->Name = $Name;  }
  }
  
  global $tblData;
  
  $tblData = array(
        'Test'  =>      new myClassA('Object 1'),
        'Test2' =>      new myClassA('Object 2'),
  );
  
  function getReferenced() {
          global $tblData;
          
          $tblData2 = array(
                'Test'  =>      &$tblData['Test'],
                'Test2' =>      &$tblData['Test2'],
          );
          return $tblData2;
  }
  
  echo '<plaintext>';
  
  print_r($tblData);
  
  $tblData2 = getReferenced();
  $tblData2['Test']->Name = 'Object 3';
  print_r($tblData2);
?>

Expected result:
----------------
I expect there to be only two objects at the end of the call, one with
a Name of 'Object 3' and one with a Name of 'Object 2'

Actual result:
--------------
Three objects exist, 'Object 1', 'Object 2', and 'Object 3'


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


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

Reply via email to