如果您有这样的文本文件:
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中创建它? 我不知道从哪里开始。 感谢。
答案 0 :(得分:3)
这是解决问题的一种非常简单的方法。结果不完全相同(最后一个元素也是一个数组),但我认为这更灵活:
$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 ()
)
)
)
*/