如果你有一个这样的文本文件:
item1
item1 > item3
item1 > item3 > item4
item1 > item5
item1 > item5 > item6 > item7
item2 > item8
item2 > item8 > item9
我想要一个看起来像这样的数组:
array(
[item1]
array(
[item3]
array(
[item4]
)
[item5]
array(
[item6]
array(
[item7]
)
)
)
[item2]
array(
[item8]
array(
[item9]
)
)
)
我应该如何在 PHP 中做到这一点?我不知道从哪里开始。 谢谢。
这是解决您问题的非常简单的方法。结果不完全相同(最后一个元素也是一个数组),但我认为这更灵活:
$input = array(
'item1',
'item1 > item3',
'item1 > item3 > item4',
'item1 > item5',
'item1 > item5 > item6 > item7',
'item2 > item8',
'item2 > item8 > item9',
);
$data = array();
foreach ($input as $line) {
$parent =& $data;
foreach (array_map('trim', explode('>', $line)) as $el) {
if (!isset($parent[$el])) {
$parent[$el] = array();
}
$parent =& $parent[$el];
}
}
print_r($data);
/*
Array (
[item1] => Array (
[item3] => Array (
[item4] => Array ()
)
[item5] => Array (
[item6] => Array (
[item7] => Array ()
)
)
)
[item2] => Array (
[item8] => Array (
[item9] => Array ()
)
)
)
*/
演示:http://codepad.viper-7.com/IwZFQ3