Re: Multidimensional array construction
| From: | Mike Eheler | Date: | Tue, 04 Dec 2001 00:29:49 +0000 |
| Subject: | Re: Multidimensional array construction | ||
| References: | 1 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-76440@lists.php.net to get a copy of this message | ||
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:Darren.Gamble@sjrb.ca] 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