Page 1 of 1
Dynamic Multi-Dem Array
Posted: Tue Jun 13, 2006 3:53 pm
by hawleyjr
I'm pretty sure I've done this before...I'm just not getting it to work as I want.
I have an array:
Code: Select all
<?php
$aTest = array('level1','level2','level3','level4');
With the values of the array. I would like to create a multi-dem array such as:
Code: Select all
<?php
$aTest2['level1']['level2']['level3']['level4'] = array();
?>
Any ideas?
Posted: Tue Jun 13, 2006 4:02 pm
by TheMoose
Like this?
Code: Select all
$aTest = array('level1' => array('level2' => array('level3' => array('level4' => array()))));
Posted: Tue Jun 13, 2006 4:06 pm
by hawleyjr
TheMoose wrote:Like this?
Code: Select all
$aTest = array('level1' => array('level2' => array('level3' => array('level4' => array()))));
That would produce what I'm trying to do however, it doesn't answer the question of how do I go from :
Code: Select all
$aTest = array('level1','level2','level3','level4');
To:
Code: Select all
$aTest2['level1']['level2']['level3']['level4'] = array();
Posted: Tue Jun 13, 2006 4:22 pm
by TheMoose
Not the most secure, but it works:
Code: Select all
$aTest = array('level1', 'level2', 'level3', 'level4');
$aTest2 = array();
$str = "$" . "aTest2";
for($i=0;$i<count($aTest);$i++) {
$str .= "['" . $aTest[$i] . "']";
}
$str .= " = array();";
eval($str);
Posted: Tue Jun 13, 2006 4:33 pm
by hawleyjr
You may be onto something using
eval() however, it still doesn't produce the desired result...
Posted: Tue Jun 13, 2006 4:35 pm
by feyd
Posted: Tue Jun 13, 2006 4:40 pm
by hawleyjr
Thanks Feyd, I can work off of that
Code: Select all
$in = array('level1', 'level2', 'level3', 'level4','');
function storeInto($a) {
$aLast = count($a) - 1;
$result = array($a[$aLast]);
for($i=$aLast-1;$i>=0;$i--) {
$result = array($a[$i] => $result);
}
return $result;
}
$out = storeInto($in);
print_r($out);
Will produce:
Code: Select all
Array
(
[level1] => Array
(
[level2] => Array
(
[level3] => Array
(
[level4] => Array
(
[0] =>
)
)
)
)
)