php 递归分销角色,PHP递归无限分类
我們面試程序開發的時候,經常會被問到遞歸的問題。今天我們在本文中以“素材火的特效分類表”作為演示,使用PHP遞歸結合Mysql實現無限級分類。
難易:初級
下載資源
下載積分:
50
積分
遞歸簡單的說就是一段程序代碼的重復調用,當把代碼寫到一個自定義函數中,將參數等變量保存,函數中重復調用函數,直到達到某個條件才跳出,返回相應的數據。
cats表: CREATE TABLE IF NOT EXISTS `cats` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`pid` int(11) DEFAULT '0',
`name` varchar(50) NOT NULL,
`ord` int(6) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=132 ;
INSERT INTO `cats` (`id`, `pid`, `name`, `ord`) VALUES
(1, 0, '特效分類', 1),
(2, 0, '難易程度', 2),
(3, 2, '入門級', 1),
(4, 2, '初級', 2),
(5, 2, '中級', 3),
(6, 2, '高級', 4),
(7, 1, '圖片代碼', 1),
(8, 1, '導航菜單', 2),
(9, 1, '選項卡/滑動門', 3),
......
演示一:返回字符串 echo get_str(0, 0); //輸出無限級分類
function get_str($id = 0, $level = 0) {
global $str;
$sql = "select id,name from cats where pid= $id";
$result = mysql_query($sql); //查詢pid的子類的分類
if ($result && mysql_affected_rows()) {//如果有子類
$str .= '
- ';
$level++;
while ($row = mysql_fetch_array($result)) { //循環記錄集
$str .= "
" . $row['id'] . "--" . $row['name'] . $level . ""; //構建字符串get_str($row['id'], $level); //調用get_str(),將記錄集中的id參數傳入函數中,繼續查詢下級
}
$str .= '
';}
return $str;
}
演示二:返回數組 $list = get_array(0); //調用函數
print_r($list); //輸出數組
function get_array($id = 0) {
$sql = "select id,name from cats where pid= $id";
$result = mysql_query($sql); //查詢子類
$arr = array();
if ($result && mysql_affected_rows()) {//如果有子類
while ($rows = mysql_fetch_assoc($result)) { //循環記錄集
$rows['list'] = get_array($rows['id']); //調用函數,傳入參數,繼續查詢下級
$arr[] = $rows; //組合數組
}
return $arr;
}
}
總結
以上是生活随笔為你收集整理的php 递归分销角色,PHP递归无限分类的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java学习(165):inetaddr
- 下一篇: 静态网页-学校官网(附源码)