Re: problem with passing-by-reference

From: Date: Fri, 14 May 2010 08:44:33 +0000
Subject: Re: problem with passing-by-reference
References: 1 2  Groups: php.general 
Request: Send a blank email to php-general+get-305178@lists.php.net to get a copy of this message
> On Fri, May 14, 2010 at 10:09 AM, Rene Veerman <rene7705@gmail.com> wrote: >> Hi. >> >> I'm doing the 5.3-strict thing, and am removing all my >> passing-by-reference muck from a script of mine. >> >> But i've run into a problem; >> >> I use the following construct to push new values fairly deeply inside >> an array structure; >> >> $chase = chaseToReference ($wm, $path); >> $arr = result($chase); >> $arr[$v] = $lid; >> >> $path is a flat-list array of indexes in $wm that have to be traversed >> to get to the right portion of $wm. >> a debug-dump of $wm and $arr after running this code shows $arr >> correctly updated, but $wm not. :(( >> >> here are the functions involved, any help is much appreciated. >> >> function chaseToReference (&$array, $path) { >>  if (!empty($path)) { >>    if (empty($array[$path[0]])) { >>                        return badResult (E_USER_WARNING, array( >>                                'msg' => 'Could not walk >> the full tree', >>                                '$path' => $path, >>                                '$array (possibly partially >> walked)' => $array >>                        )); >>    } else return chaseToReference($array[$path[0]], array_slice($path, 1)); >>  } else { >>    return goodResult($array); >>  } >> } >> >> function result(&$r) { >>  return $r['result']; >> } >> >> function goodResult(&$r) { >>  $r2 = array ( >>  'isMetaForFunc' => true, >>        'result' => &$r >>  ); >>  return $r2; >> } >> On Fri, May 14, 2010 at 10:39 AM, Rene Veerman <rene7705@gmail.com> wrote: > changed all function-definitions to include a "&" before their name, > no change in behavior though.. > And then, change the calling code to: $chase = &chaseToReference ($wm, $path); $arr = &result($chase); $arr[$v] = $lid; and it works :))

« previous php.general (#305178) next »