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 に答える