0

如果您有这样的文本文件:

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 做这个?我不知道从哪里开始。谢谢。

4

1 回答 1

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 ()
    )
  )
)
*/

演示:http ://codepad.viper-7.com/IwZFQ3

于 2013-02-01T09:21:41.507 回答