转换一个字符串数组,每个字符串已经点分隔的价值观,多维数组 [英] Convert an array of strings, each string has dot separated values, to a multidimensional array
本文介绍了转换一个字符串数组,每个字符串已经点分隔的价值观,多维数组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有以下数组:
阵列
(
[0] => INBOX.Trash
[1] => INBOX.Sent
[2] => INBOX.Drafts
[3] => INBOX.Test.sub文件夹
[4] => INBOX.Test.sub folder.test 2
)
我怎么可以这样数组转换为一个多维数组是这样的:
阵列
(
[收件箱] =>排列
(
[垃圾] =>排列
(
) [发送] =>排列
(
) [草案] =>排列
(
) [测试] =>排列
(
[子文件] =>排列
(
[测试2] =>排列
(
) ) ) ))
解决方案
试试这个。
< PHP
$测试=阵列
(
0 => INBOX.Trash',
1 => INBOX.Sent',
2 => INBOX.Drafts',
3 => INBOX.Test.sub文件夹,
4 => 'INBOX.Test.sub folder.test 2',
);$输出=阵列();
的foreach($测试为$元素){
assignArrayByPath($输出,$元件);
}
//的print_r($输出);
调试($输出);
功能assignArrayByPath(安培; $改编,$ PATH){
$键=爆炸(,$ PATH'。'); 虽然($关键= array_shift($键)){
$ ARR =安培; $改编[$关键];
}
}功能调试($ ARR){
回声< pre>中;
的print_r($ ARR);
回声< / pre>中;
}
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
(
)
)
)
)
)
解决方案
Try this.
<?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);
}
//print_r($output);
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>";
}
这篇关于转换一个字符串数组,每个字符串已经点分隔的价值观,多维数组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文