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

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

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

[cc lang=PHP]
$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 ); [/cc] 結果はこんなかんじ。 [cc lang=PHP] Array ( [東京都] => Array
(
[区部] => Array
(
[千代田区] => object1
[中央区] => object2
[港区] => object3
)

[多摩地域] => Array
(
[支部] => Array
(
[昭島市] => object4
[あきる野市] => object5
)

[西多摩郡] => Array
(
[奥多摩町] => object6
)

)

[島嶼部] => Array
(
[大島支庁] => Array
(
[大島町] => object7
)

[三宅支庁] => Array
(
[三宅村] => object8
)

)

)

)
[/cc]

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

Related Posts

Comments are closed.