ホームページ >バックエンド開発 >PHPチュートリアル >PHPでメニュー無限分類を実現

PHPでメニュー無限分類を実現

肚皮会动
肚皮会动オリジナル
2017-11-14 15:03:393948ブラウズ

この記事では、PHPを使ってメニューを実装する方法を詳しく紹介しますInfinitus分類一般的な項目メニューは、if elseだけを使って判断すると不格好になります。メニューを変更したいのですが、とても面倒です。最善の方法は、メニューをデータベースに保存し、データベースからメニューを取得して走査し、ページに表示することです。この記事の目的は、データをクエリし、メニューの上位レベルと下位レベルを 1 つずつ照合する方法を説明することです。無限分類技術を採用。 メニューデータ

ここでのメニューデータはデータベースからクエリされたり処理されたりするものではありません。データは基本的に次のとおりです。データベースからクエリされるように変更されました。

メニュー Infinitus 分類メソッドを作成します

$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' => 3, 'name' => '长丰县'),
            6 => array('id' => 6, 'pid' => 4, 'name' => '小溪村'),
            5 => array('id' => 5, 'pid' => 1, 'name' => '安庆市'),
        );

上記のコードを分析します: ここでより重要な部分は、コード内の

コメント

の場所、フォーカス 1、フォーカス 2 です。まず、配列を走査します

2. ポイント 1 は、ルート メニューであるかどうかを判断し、その配列の参照を新しい配列に割り当てます。サブクラス配列を親クラス配列に割り当てます。

5. 最終結果はツリー構造の配列です。 結果は次のようになります:

   function generateTree($list, $pk = 'id', $pid = 'pid', $child = '_child', $root = 0)
{
    $tree     = array();
    $packData = array();
    foreach ($list as $data) {
        $packData[$data[$pk]] = $data;
    }
    foreach ($packData as $key => $val) {
        if ($val[$pid] == $root) {
//代表跟节点, 重点一
            $tree[] = &$packData[$key];
        } else {
            //找到其父类,重点二
            $packData[$val[$pid]][$child][] = &$packData[$key];
        }
    }
    return $tree;
}
結果をフロントエンドに返します。 html 要素
を追加すると、メニュー効果が表示されます

概要

1. PHP を使用して Infinitus を実行する際の難しさは、代入ではなく、配列への参照の代入です。

2. php $arr=&$arr1、$CustomerTwo=&$Customer などの

オブジェクト では、通常、メモリ内に新しい領域が開かれません。メモリ内のデータの参照を新しい変数に渡します 3. この方法を使用すると、再帰を使用するよりもはるかに簡単になります。

4. 上記の方法は最適ではありません。他のメソッドはインターネットで見つけることができます。いくつかのメソッドは、それらを使用した後に表示されます。たとえば、次の関数: このメソッドは確かに効果を達成でき、非常に効率的であるように見えます。 、最大の問題は、id 値が対応するキー値と一致している必要があるということです。理解している人は自分でテストできると思います。

関連する推奨事項:


php 無限レベル分類の再帰的実装の開発プロセスとサンプル コード

php 無限レベル分類のサンプル コード

php 無限レベル分類を実現する 3 つの方法

php unlimited level 分類実装方法の分析

以上がPHPでメニュー無限分類を実現の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。