Infinitus 分類を実装するための php メソッド: 最初に PHP サンプル ファイルを作成し、次にロジック コードを記述します。次に、最上位からサブクラスを取得し、最後に、サブクラスから開始して、その親クラスを段階的に取得します。無限の分類が可能です。
この記事の動作環境: Windows7 システム、PHP7.1 バージョン、DELL G3 コンピューター
Infinitus 分類の PHP 実装グラフィック チュートリアル
一般に、Infinitus 分類の実装には再帰的手法または反復手法が使用されます。この記事の実装方法をご覧ください。
1、データベース設計:
##2、コード: コードは次のとおりです。/** * @author koma * @todo PHP无限极分类 */ $cn = mysql_connect('localhost', 'root', '') or die(mysql_error()); mysql_select_db('t', $cn) or die(mysql_error()); mysql_query('set names utf8'); /** * 从顶层逐级向下获取子类 * @param number $pid * @param array $lists * @param number $deep * @return array */ function getLists($pid = 0, &$lists = array(), $deep = 1) { $sql = 'SELECT * FROM category WHERE pid='.$pid; $res = mysql_query($sql); while ( ($row = mysql_fetch_assoc($res)) !== FALSE ) { $row['catename'] = str_repeat(' ', $deep).'|---'.$row['catename']; $lists[] = $row; getLists($row['id'], $lists, ++$deep); //进入子类之前深度+1 --$deep; //从子类退出之后深度-1 } return $lists; } function displayLists($pid = 0, $selectid = 1) { $result = getLists($pid); $str = '<select>'; foreach ( $result as $item ) { $selected = ""; if ( $selectid == $item['id'] ) { $selected = 'selected'; } $str .= '<option '.$selected.'>'.$item['catename'].'</option>'; } return $str .= '</select>'; } /** * 从子类开始逐级向上获取其父类 * @param number $cid * @param array $category * @return array: */ function getCategory($cid, &$category = array()) { $sql = 'SELECT * FROM category WHERE id='.$cid.' LIMIT 1'; $result = mysql_query($sql); $row = mysql_fetch_assoc($result); if ( $row ) { $category[] = $row; getCategory($row['pid'], $category); } krsort($category); //逆序,达到从父类到子类的效果 return $category; } function displayCategory($cid) { $result = getCategory($cid); $str = ""; foreach ( $result as $item ) { $str .= '<a href="'.$item['id'].'">'.$item['catename'].'</a>>'; } return substr($str, 0, strlen($str) - 1); } echo displayLists(0, 3); echo displayCategory(13);
PHP ビデオ チュートリアル ]
以上がPHPで無限分類を実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。