从文本行创建多维数组 [英] Create Multidimensional array from text lines

查看:78
本文介绍了从文本行创建多维数组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

If you have a text file like this:

item1
item1 > item3
item1 > item3 > item4
item1 > item5
item1 > item5 > item6 > item7
item2 > item8
item2 > item8 > item9

我想要一个看起来像这样的数组:

And I want a array that looks like this:

array(
        [item1]
                array(
                        [item3]
                                array(
                                        [item4]
                                )
                        [item5]
                                array(
                                        [item6]
                                                array(
                                                        [item7]
                                                )
                                )
                )
        [item2]
                array(
                        [item8]
                                array(
                                        [item9]
                                )              
                )
    )

我应该如何在PHP中做到这一点? 我不知道从哪里开始. 谢谢.

How should I make this in PHP? I have no idea where to start. Thanks.

推荐答案

这是解决问题的一种非常简单的方法.结果并不完全相同(最后一个元素也是数组),但是我认为这更加灵活:

Here's a very simple way to approach your problem. The result is not exactly the same (the last element is also an array) but this is more flexible I think:

$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

这篇关于从文本行创建多维数组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆