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

 ID:               52133
 Updated by:       dmi...@php.net
 Reported by:      bschussek at gmail dot com
 Summary:          Functions cannot return an argument passed by
                   reference as reference
-Status:           Assigned
+Status:           Bogus
 Type:             Bug
 Package:          Scripting Engine problem
 Operating System: Linux Ubuntu 10.04
 PHP Version:      5.3.2
 Assigned To:      dmitry

 New Comment:

You forgot "&" in assignment.



$c =& ref($b);


Previous Comments:
------------------------------------------------------------------------
[2010-06-23 00:51:13] bschussek at gmail dot com

In my last comment I dumped first $b and then $c, so the output hasn't
changed 

from PHP 5.3.2.

------------------------------------------------------------------------
[2010-06-23 00:48:36] bschussek at gmail dot com

Sorry, but the test script produces still the wrong output for me.



$ php -v

PHP 5.3.3-dev (cli) (built: Jun 23 2010 00:45:57) 

Copyright (c) 1997-2010 The PHP Group

Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies

    with Xdebug v2.0.5, Copyright (c) 2002-2008, by Derick Rethans



$ php test.php

string(6) "foobar"

string(6) "fozbar"

------------------------------------------------------------------------
[2010-06-23 00:29:01] johan...@php.net

Please try using this snapshot:

  http://snaps.php.net/php5.3-latest.tar.gz
 
For Windows:

  http://windows.php.net/snapshots/

------------------------------------------------------------------------
[2010-06-21 13:56:07] bschussek at gmail dot com

Description:
------------
PHP does not behave as expected when passing arguments by reference into
a 

function that are passed out again by reference.



IMO, the below test script should behave equivalently to the following
code 

(which produces the expected result):



$b = 'foobar';

$a =& $b;

$c =& $a;

$c[2] = 'z';



var_dump($c);

var_dump($b);

Test script:
---------------
function &ref(&$a)

{

  return $a;

}



$b = 'foobar';

$c = ref($b);

$c[2] = 'z';

Expected result:
----------------
string 'fozbar' (length=6)

string 'fozbar' (length=6)

Actual result:
--------------
string 'fozbar' (length=6)

string 'foobar' (length=6)


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



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

Reply via email to