ID:               32840
 Updated by:       [EMAIL PROTECTED]
 Reported By:      wagner at bonn dot edu
-Status:           Open
+Status:           Bogus
 Bug Type:         Scripting Engine problem
 Operating System: *
 PHP Version:      4.3.11, 5.0.4
 New Comment:

RTFM:   
  
  http://www.php.net/manual/en/language.variables.scope.php

And the part with title:

  "References with global and static variables"


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

[2005-04-26 14:55:47] wagner at bonn dot edu

probably related to http://bugs.php.net/bug.php?id=32841 
which also shows the broken behaviour for actual member 
variables

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

[2005-04-26 14:39:33] wagner at bonn dot edu

The Expected result should actually look like this: 
--------------------------------------------------- 
f1: 11  
f2: 11

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

[2005-04-26 14:37:52] wagner at bonn dot edu

Description:
------------
Returning a value of an array or a member-variable causes    
the return to be by reference.  This also happens in PHP 
4.3.x 
Related to http://bugs.php.net/bug.php?id=32789 which   
seems bogusified beyond repair.   

Reproduce code:
---------------
function incr(&$int) {
  return $int++;
}

function f() {
  static $v;
  if (!$v)   
    $v = 1;
  return($v); 
} 

function f2() {
  static $v;
  if (!$v) {
    $v = array();
    $v[0] = 1;
  }
  return($v[0]); 
} 

echo "f1: ".incr(f()).incr(f())."\n"; 
echo "f2: ".incr(f2()).incr(f2())."\n"; 

Expected result:
----------------
f1: 11 
f2: 12 
 
Same behaviour for both functions. 

Actual result:
--------------
f1: 11 
f2: 12 
 
f2 inexplicably returns a reference. 
The manual states that for this to happen, it should be 
necessary to actually use a & in front of the definition 
of the returning function: 
http://de2.php.net/manual/en/language.references.return.php 
"... you have to use & in both places - to indicate that 
you return by-reference, not a copy as usual, and to 
indicate that reference binding, rather than usual 
assignment, should be done ..." 


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


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

Reply via email to