ID:               42271
 User updated by:  rodji at tut dot by
 Reported By:      rodji at tut dot by
 Status:           Open
 Bug Type:         Scripting Engine problem
 Operating System: Win32 XP sp2.2600
-PHP Version:      4.4.7
+PHP Version:      5.2.3
 New Comment:

(added php version)


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

[2007-08-11 09:29:05] rodji at tut dot by

Description:
------------
Tested on:
Apache/1.3.33 (Win32)
PHP/4.4.7 and 5.2.3

trouble with references in functions

Reproduce code:
---------------
function args_select($args, $args_list, $def_val) {
        $r = array();
        foreach ($args_list as $key) {
                if (array_key_exists($key, $args)){
                        $r[$key] = $args[$key];
                }else{
                        $r[$key] = $def_val;    //equal $r[$key] =& $def_val   
why???
                        //$r[$key] = (string)$def_val;  //solution#1
                }
        }
        return $r;
}

$argums = array('action'=>'edit', 'id'=>1);
$select = array('action','to_do','back');

//debug_zval_dump(args_select($argums, $select, ''));

extract(args_select($argums, $select, ''), EXTR_OVERWRITE |
EXTR_REFS);
//solution#2   why???
/*$m = args_select($argums, $select, '');
//OR //$m =& args_select($argums, $select, '');
extract($m, EXTR_OVERWRITE | EXTR_REFS);
*/

$to_do = 'new';
debug_zval_dump (&$back);
?>

Expected result:
----------------
&string(0) "" refcount(2)

Actual result:
--------------
&string(3) "new" refcount(3)


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


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

Reply via email to