【发布时间】:2013-10-12 19:05:47
【问题描述】:
我有一个这样的字符串:
a,,b,c,,d,,,e,f,g,,e,,,,
我想要一个这样的数组:
Array
(
[a] => Array
(
)
[b] => Array
(
[c] => Array
(
)
[d] => Array
(
)
)
[e] => Array
(
[f] => Array
(
[g] => Array
(
)
[e] => Array
(
)
)
)
)
逻辑是:一个项目后第一个逗号打开该项目,第二个将关闭该项目,两个逗号之间的所有内容都是它的子项。
我做了这个函数:
function source() {
global $get;
$items = array();
$item = true;
while ($item) {
$pieces = explode(',', $get, 2);
if (!empty($pieces[1])) $get = $pieces[1];
$item = $pieces[0];
if ($item) $items[$item] = source();
}
return $items;
}
$get = 'a,,b,c,,d,,,e,f,g,,e,,,,';
print_r (source());
我仍然遇到一些问题,例如如果字符串以 item 加逗号或没有逗号结束,我会得到一个无限循环。我知道我可以检查是否有足够的逗号并在调用函数之前添加它们,但我不喜欢我的函数。我知道有人在这方面比我更好。所以我问:
将字符串(树,仅用逗号分隔)转换为多维数组()的最佳解决方案是什么?
附言我不确定这是否是最好的询问方式。
【问题讨论】:
标签: php arrays string data-structures multidimensional-array