RE: [PHP] Multidimensional array construction
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]
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]
RE: [PHP] Multidimensional array construction
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]
RE: [PHP] Multidimensional array construction
This might be interesting ... The function extract() allows you to extract all values from an array and prefix them with a specified string. What I didn't know until just a second ago was that you can supply a function as a string, so ... $my_array = array(a,b,c,d,array(a,b,c,d)); $i = 1; extract($my_array,EXTR_PREFIX_ALL,SOMEVAL.$i++); print pre; print $SOMEVAL_1; print $SOMEVAL_2; print $SOMEVAL_3; print $SOMEVAL_4; print $SOMEVAL_5; print /pre; ... will produce: a b c d [Array] Which is cool. Not quite what you wanted, but maybe you could run with it. Jim -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] -- Jim Musil - Multimedia Programmer Nettmedia - 212-629-0004 [EMAIL PROTECTED] -- 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]
RE: [PHP] Multidimensional array construction
oops. That's not correct. I wish it was though! ;) This might be interesting ... The function extract() allows you to extract all values from an array and prefix them with a specified string. What I didn't know until just a second ago was that you can supply a function as a string, so ... $my_array = array(a,b,c,d,array(a,b,c,d)); $i = 1; extract($my_array,EXTR_PREFIX_ALL,SOMEVAL.$i++); print pre; print $SOMEVAL_1; print $SOMEVAL_2; print $SOMEVAL_3; print $SOMEVAL_4; print $SOMEVAL_5; print /pre; ... will produce: a b c d [Array] Which is cool. Not quite what you wanted, but maybe you could run with it. Jim -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] -- Jim Musil - Multimedia Programmer Nettmedia - 212-629-0004 [EMAIL PROTECTED] -- 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] -- Jim Musil - Multimedia Programmer Nettmedia - 212-629-0004 [EMAIL PROTECTED] -- 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]
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]