『階層的なキーの連想配列化』投稿

 『どう書く?.org』への投稿ひさびさ。

 お題はこちら
 今回は与えられたテーブルを元に階層的な連送配列を作りなさいというもの。
 配列を&で渡しているのがポイント。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
$tokyo = array(
    array('東京都', '区部', '千代田区', 'object1')
    ,array('東京都', '区部', '中央区', 'object2')
    ,array('東京都', '区部', '港区', 'object3')
    ,array('東京都', '多摩地域', '支部', '昭島市', 'object4')
    ,array('東京都', '多摩地域', '支部', 'あきる野市', 'object5')
    ,array('東京都', '多摩地域', '西多摩郡', '奥多摩町', 'object6')
    ,array('東京都', '島嶼部', '大島支庁', '大島町', 'object7')
    ,array('東京都', '島嶼部', '三宅支庁', '三宅村', 'object8')
    );

$tokyo_tree = array();

foreach ( $tokyo as $obs ) {
  $w = &$tokyo_tree;
  $cnt = count( $obs );
  for ( $i = 0; $i < $cnt; $i++ ) {
    if ( $i == $cnt-1 ) {
      $w = $obs[$i];
    }
    else {
      $w = &$w[$obs[$i]];
    }
  }
}

print_r( $tokyo_tree );

結果はこんなかんじ。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
Array
(
  [東京都] => Array
    (
      [区部] => Array
        (
          [千代田区] => object1
          [中央区] => object2
          [港区] => object3
        )
 
      [多摩地域] => Array
        (
          [支部] => Array
            (
              [昭島市] => object4
              [あきる野市] => object5
            )
 
          [西多摩郡] => Array
            (
              [奥多摩町] => object6
            )
 
        )
 
      [島嶼部] => Array
        (
          [大島支庁] => Array
            (
              [大島町] => object7
            )
 
          [三宅支庁] => Array
            (
              [三宅村] => object8
            )
 
        )
 
    )
 
)

投稿:
http://ja.doukaku.org/comment/10876/
PHP Rank:17(61.1%)

Related Posts

Comments are closed.