『階層的なキーの連想配列化』投稿
『どう書く?.org』への投稿ひさびさ。
お題はこちら。 今回は与えられたテーブルを元に階層的な連送配列を作りなさいというもの。
配列を&で渡しているのがポイント。
$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 );
結果はこんなかんじ。
Array ( [東京都] => Array
(
[区部] => Array
(
[千代田区] => object1
[中央区] => object2
[港区] => object3
)
[多摩地域] => Array
(
[支部] => Array
(
[昭島市] => object4
[あきる野市] => object5
)
[西多摩郡] => Array
(
[奥多摩町] => object6
)
)
[島嶼部] => Array
(
[大島支庁] => Array
(
[大島町] => object7
)
[三宅支庁] => Array
(
[三宅村] => object8
)
)
)
投稿: