I have the following array:
Array
(
[0] => INBOX.Trash
[1] => INBOX.Sent
[2] => INBOX.Drafts
[3] => INBOX.Test.sub folder
[4] => INBOX.Test.sub folder.test 2
)
How can I convert this array to a multidimensional array like this:
Array
(
[Inbox] => Array
(
[Trash] => Array
(
)
[Sent] => Array
(
)
[Drafts] => Array
(
)
[Test] => Array
(
[sub folder] => Array
(
[test 2] => Array
(
)
)
)
)
)
This code uses a function from this answer to do what you're looking for.
<?php
$test = Array
(
0 => 'INBOX.Trash',
1 => 'INBOX.Sent',
2 => 'INBOX.Drafts',
3 => 'INBOX.Test.sub folder',
4 => 'INBOX.Test.sub folder.test 2',
);
$output = array();
foreach($test as $element){
assignArrayByPath($output, $element);
}
debug($output);
function assignArrayByPath(&$arr, $path) {
$keys = explode('.', $path);
while ($key = array_shift($keys)) {
$arr = &$arr[$key];
}
}
function debug($arr){
echo "<pre>";
print_r($arr);
echo "</pre>";
}