您好,登錄后才能下訂單哦!
這期內容當中小編將會給大家帶來有關在PHP中不使用遞歸怎么實現一個樹,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
PHP樹-不需要遞歸的實現方法
/** * 創建父節點樹形數組 * 參數 * $ar 數組,鄰接列表方式組織的數據 * $id 數組中作為主鍵的下標或關聯鍵名 * $pid 數組中作為父鍵的下標或關聯鍵名 * 返回 多維數組 **/ function find_parent($ar, $id='id', $pid='pid') { foreach($ar as $v) $t[$v[$id]] = $v; foreach ($t as $k => $item){ if( $item[$pid] ){ if( ! isset($t[$item[$pid]]['parent'][$item[$pid]]) ) $t[$item[$id]]['parent'][$item[$pid]] =& $t[$item[$pid]]; } } return $t; } /** * 創建子節點樹形數組 * 參數 * $ar 數組,鄰接列表方式組織的數據 * $id 數組中作為主鍵的下標或關聯鍵名 * $pid 數組中作為父鍵的下標或關聯鍵名 * 返回 多維數組 **/ function find_child($ar, $id='id', $pid='pid') { foreach($ar as $v) $t[$v[$id]] = $v; foreach ($t as $k => $item){ if( $item[$pid] ) { $t[$item[$pid]]['child'][$item[$id]] =& $t[$k]; } } return $t; } $data = array( array('ID'=>1, 'PARENT'=>0, 'NAME'=>'祖父'), array('ID'=>2, 'PARENT'=>1, 'NAME'=>'父親'), array('ID'=>3, 'PARENT'=>1, 'NAME'=>'叔伯'), array('ID'=>4, 'PARENT'=>2, 'NAME'=>'自己'), array('ID'=>5, 'PARENT'=>4, 'NAME'=>'兒子'), ); $p = find_parent($data, 'ID', 'PARENT'); $c = find_child($data, 'ID', 'PARENT'); Print_r ($c);
執行效果:
Array ( [1] => Array ( [ID] => 1 [PARENT] => 0 [NAME] => 祖父 [child] => Array ( [2] => Array ( [ID] => 2 [PARENT] => 1 [NAME] => 父親 [child] => Array ( [4] => Array ( [ID] => 4 [PARENT] => 2 [NAME] => 自己 [child] => Array ( [5] => Array ( [ID] => 5 [PARENT] => 4 [NAME] => 兒子 ) ) ) ) ) [3] => Array ( [ID] => 3 [PARENT] => 1 [NAME] => 叔伯 ) ) ) [2] => Array ( [ID] => 2 [PARENT] => 1 [NAME] => 父親 [child] => Array ( [4] => Array ( [ID] => 4 [PARENT] => 2 [NAME] => 自己 [child] => Array ( [5] => Array ( [ID] => 5 [PARENT] => 4 [NAME] => 兒子 ) ) ) ) ) [3] => Array ( [ID] => 3 [PARENT] => 1 [NAME] => 叔伯 ) [4] => Array ( [ID] => 4 [PARENT] => 2 [NAME] => 自己 [child] => Array ( [5] => Array ( [ID] => 5 [PARENT] => 4 [NAME] => 兒子 ) ) ) [5] => Array ( [ID] => 5 [PARENT] => 4 [NAME] => 兒子 ) )
上述就是小編為大家分享的在PHP中不使用遞歸怎么實現一個樹了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。