Re: Variable variables into an array.

From: Date: Wed, 11 Aug 2010 10:26:55 +0000
Subject: Re: Variable variables into an array.
References: 1 2 3 4  Groups: php.general 
Request: Send a blank email to php-general+get-307396@lists.php.net to get a copy of this message
On 10 August 2010 18:08, Andrew Ballard <aballard@gmail.com> wrote: > On Tue, Aug 10, 2010 at 12:23 PM, Richard Quadling <rquadling@gmail.com> wrote: >> On 10 August 2010 16:49, Jim Lucas <lists@cmsws.com> wrote: >>> Richard Quadling wrote: >>>> >>>> Hi. >>>> >>>> Quick set of eyes needed to see what I've done wrong... >>>> >>>> The following is a reduced example ... >>>> >>>> <?php >>>> $Set = array(); >>>> $Entry = 'Set[1]'; >>>> $Value = 'Assigned'; >>>> $$Entry = $Value; >>>> print_r($Set); >>>> ?> >>>> >>>> The output is an empty array. >>>> >>>> Examining $GLOBALS, I end up with an entries ... >>>> >>>>    [Set] => Array >>>>        ( >>>>        ) >>>> >>>>    [Entry] => Set[1] >>>>    [Value] => Assigned >>>>    [Set[1]] => Assigned >>>> >>>> >>>> According to >>>> http://docs.php.net/manual/en/language.variables.basics.php, >>>> a variable named Set[1] is not a valid variable name. The [ and ] are >>>> not part of the set of valid characters. >>>> >>>> In testing all the working V4 and V5 releases I have, the output is >>>> always an empty array, so it looks like it is me, but the invalid >>>> variable name is an issue I think. >>>> >>>> Regards, >>>> >>>> Richard. >>>> >>>> NOTE: The above is a simple test. I'm trying to map in nested data to >>>> over 10 levels. >>> >>> For something like this, a string that looks like a nested array reference, >>> you might need to involve eval for it to "derive" that nested array. >>> >> >> I'm happy with that. >> >> It seems variable variables can produce variables that do not follow >> the same naming limitations as normal variables. >> > > It would seem so. If eval() works, can you rearrange the strings a > little to make use of parse_str() and avoid the use of eval()? > > Andrew > php -r "parse_str('a[1][2][3]=richard quadling'); var_dump($a);" outputs ... array(1) { [1]=> array(1) { [2]=> array(1) { [3]=> string(16) "richard quadling" } } } Perfect. Thanks. -- Richard Quadling.

« previous php.general (#307396) next »