《PHP教程:PHP從二維數(shù)組得到N層分類(lèi)樹(shù)的實(shí)現(xiàn)代碼》要點(diǎn):
本文介紹了PHP教程:PHP從二維數(shù)組得到N層分類(lèi)樹(shù)的實(shí)現(xiàn)代碼,希望對(duì)您有用。如果有疑問(wèn),可以聯(lián)系我們。
PHP實(shí)例公司的產(chǎn)品分類(lèi)存在一張表內(nèi),以mid標(biāo)識(shí)其父分類(lèi),需要得到有層次結(jié)構(gòu)的數(shù)組,以備后續(xù)操作.
PHP實(shí)例想了下,想了一會(huì)兒沒(méi)想出不去重復(fù)讀取數(shù)據(jù)庫(kù)的方法或者不需要遞歸的操作.
PHP實(shí)例數(shù)據(jù)源:(數(shù)據(jù)要求一維key與對(duì)應(yīng)value二維數(shù)組的id要一樣)
PHP實(shí)例
$items = array(
????1 => array('id' => 1, 'pid' => 0, 'name' => '江西省'),
????2 => array('id' => 2, 'pid' => 0, 'name' => '黑龍江省'),
????3 => array('id' => 3, 'pid' => 1, 'name' => '南昌市'),
????4 => array('id' => 4, 'pid' => 2, 'name' => '哈爾濱市'),
????5 => array('id' => 5, 'pid' => 2, 'name' => '雞西市'),
????6 => array('id' => 6, 'pid' => 4, 'name' => '香坊區(qū)'),
????7 => array('id' => 7, 'pid' => 4, 'name' => '南崗區(qū)'),
????8 => array('id' => 8, 'pid' => 6, 'name' => '和興路'),
????9 => array('id' => 9, 'pid' => 7, 'name' => '西大直街'),
????10 => array('id' => 10, 'pid' => 8, 'name' => '東北林業(yè)大學(xué)'),
????11 => array('id' => 11, 'pid' => 9, 'name' => '哈爾濱工業(yè)大學(xué)'),
????12 => array('id' => 12, 'pid' => 8, 'name' => '哈爾濱師范大學(xué)'),
????13 => array('id' => 13, 'pid' => 1, 'name' => '贛州市'),
????14 => array('id' => 14, 'pid' => 13, 'name' => '贛縣'),
????15 => array('id' => 15, 'pid' => 13, 'name' => '于都縣'),
????16 => array('id' => 16, 'pid' => 14, 'name' => '茅店鎮(zhèn)'),
????17 => array('id' => 17, 'pid' => 14, 'name' => '大田鄉(xiāng)'),
????18 => array('id' => 18, 'pid' => 16, 'name' => '義源村'),
????19 => array('id' => 19, 'pid' => 16, 'name' => '上壩村'),
);
PHP實(shí)例生成樹(shù)的函數(shù):
PHP實(shí)例
function genTree9($items) {
????$tree = array();
????foreach ($items as $item)
????????if (isset($items[$item['pid']]))
????????????$items[$item['pid']]['son'][] = &$items[$item['id']];
????????else
????????????$tree[] = &$items[$item['id']];
????return $tree;
}
PHP實(shí)例當(dāng)然.滿足特定條件下的數(shù)據(jù),更是可以把函數(shù)縮到只有短短5行:
PHP實(shí)例
function genTree5($items) {
????foreach ($items as $item)
????????$items[$item['pid']]['son'][$item['id']] = &$items[$item['id']];
????return isset($items[0]['son']) ? $items[0]['son'] : array();
}
PHP實(shí)例一遍循環(huán),內(nèi)存引用.省時(shí)又省空間.
轉(zhuǎn)載請(qǐng)注明本頁(yè)網(wǎng)址:
http://www.snjht.com/jiaocheng/3086.html