# Array of 'n' dimensions?

#### Do you have a question? Post it now! No Registration Necessary.  Now with pictures!

•  Subject
• Author
• Posted on
Hi all,

Wondering if anyone can help me. If i have an associative array:

\$arr = array(
"one" => array(1, 2, 3),
"two" => array(5, 6),
"three" => array(7,8,9,10)
...
"n" => array(p,q,r....)
);

and I want to combine the values for each value in the associative array to
produce one array of "n" dimensions, how is
this best done? The number of dimensions of the array is not known until
runtime, so addressing the array can't be done in a hard-coded fashion.

To exemplify what i'm after as the end result (in the case of there being 3
values in \$arr, as above);

\$multi_arr = array(
1 => array(
5 => array (
7 => "value",
8 => "value",
9 => "value",
10 => "value"
),
6 => array (
7 => "value",
8 => "value",
9 => "value",
10 => "value"
)
),
2 => array (
5 => array (
7 => "value",
8 => "value",
9 => "value",
10 => "value"
),
6 => array (
7 => "value",
8 => "value",
9 => "value",
10 => "value"
)
),
3 => array (
5 => array (
7 => "value",
8 => "value",
9 => "value",
10 => "value"
),
6 => array (
7 => "value",
8 => "value",
9 => "value",
10 => "value"
)
)
);

At the moment, I'm using a loop to build the necessary number of array
subscripts in a string, then eval()ing the string, as a means of both
creating and addressing the array. Which works, but it's a sloppy approach.
I'm just wondering if anyone has another solution to the problem?

Any help appreciated. My apologies for the length of the post.

Regards
Miles

## Re: Array of 'n' dimensions?

Kimmo Laine wrote:

Unless next_page.php generates PHP, the script with this include will
only get HTML.

next_page.php

<?php
if (isset(\$_GET['foo'])) {
echo '<?php echo \$_GET[\'foo\']; ?>';
} else {
echo '<?php echo \'Not available\'; ?>';
}

--

## Re: Array of 'n' dimensions?

I think this does it where array values become array keys...

\$arrays = array(
'any'=>array(11,22),
'key'=>array(33,44),
'will'=>array(55,66),
'work'=>array(77,88)
);

\$multi = '';
\$arrays = array_reverse(\$arrays, true);

foreach(\$arrays as \$array){
\$tmp = array();
foreach(\$array as \$val){
\$tmp[\$val] = \$multi;
}
\$multi = \$tmp;
}

print_r(\$multi);