I haven't seen the rest of this thread so this may be irrelevant ... but
foreach($array as $key=>$value)
{ $array[$key] = "fred";
}
... alters an array while traversing it. Your case seems more complicated
but I would have thought nesting foreaches in this way would allow you to
access the original element.
foreach($array as $key1=>$value1)
{ foreach($array as $key2=>$value2)
{ $array[$key1][$key2] = "fred";
}
}
Tim
http://www.chessish.com <http://www.chessish.com>
----------
From: Darren Gamble [SMTP:[EMAIL PROTECTED]]
Sent: 04 December 2001 15:22
To: PHP List; 'Mike Eheler'
Subject: RE: [PHP] Multidimensional array construction
Good day,
Thanks to all who replied.
This isn't quite what I needed, though. I _have_ the array (or
delimited
list would do, too). What I need to do is _CREATE_ the array
element
$myarray['foo']['bar']['green']['apple'] and set it to some value.
Actually
traversing said array isn't hard, as you pointed out.
foreach() doesn't work, as it just uses a copy of the original
array. I
think there might be some way to use variable references, but I
haven't
gotten one to work yet.
Any other suggestions?
============================
Darren Gamble
Planner, Regional Services
Shaw Cablesystems GP
630 - 3rd Avenue SW
Calgary, Alberta, Canada
T2P 4L4
(403) 781-4948
-----Original Message-----
From: Mike Eheler [mailto:[EMAIL PROTECTED]]
Sent: Monday, December 03, 2001 5:30 PM
To: Martin Towell
Cc: 'Darren Gamble'; PHP List
Subject: Re: [PHP] Multidimensional array construction
I did something like this recently. Here's how I did it:
$some_value1 = 'Hello World';
$myarray['foo']['bar']['green']['apple'] = $some_value1;
function get_opt($arr, $keys,$sep=':') {
$var = $arr;
$tmp = split($sep,$keys);
foreach ($tmp as $k => $v) {
$var = $var[$v];
}
if (isset($var)) return $var;
return '';
}
echo get_opt($myarray, 'foo:bar:green:apple');
It needs refining, but it should do the job. That's entirely from
memory, mind you.. it should work, though.
Mike
Martin Towell wrote:
>I was thinking that you could use a "pointer to var", eg:
> $var = 'myarray["foo"]["bar"]["red"]["apple"]';
> // this would obviously be created dynamically, hard coded for
testing
> $$var = $some_value1;
> echo $myarray["foo"]["bar"]["red"]["apple"];
>but when I tried it, it didn't work :(
>looks like eval() to the rescue...
>
>-----Original Message-----
>From: Darren Gamble [mailto:[EMAIL PROTECTED]]
>Sent: Tuesday, December 04, 2001 10:37 AM
>To: PHP List
>Subject: [PHP] Multidimensional array construction
>
>
>Here's a question for the list:
>
>I have a two-dimensional array; essentially a list of arrays. Each
element
>(an array) can have any number of elements. As a small example:
>
>(
> ( "foo" , "bar" , "red" , "apple" ),
> ( "foo" , "bar" , "red" , "car"),
> ( "foo" , "green" )
>)
>
>I would like to traverse this array and place all of the data into
another
>multidimensional array. The following statements illustrate how
I'd like
to
>do this from the example:
>
>$myarray["foo"]["bar"]["red"]["apple"] = $some_value1;
>$myarray["foo"]["bar"]["red"]["car"] = $some_value2;
>$myarray["foo"]["green"] = $some_value3;
>
>Is there any way to easily do this in PHP? I could "cheat" and use
eval(),
>but there is probably a better way. I have thought of using each()
or
>references, but nothing has come to mind so far.
>
>Any ideas? Should I just use eval() ?
>
>============================
>Darren Gamble
>Planner, Regional Services
>Shaw Cablesystems GP
>630 - 3rd Avenue SW
>Calgary, Alberta, Canada
>T2P 4L4
>(403) 781-4948
>
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]