ホームページ  >  記事  >  バックエンド開発  >  PHPの無限分類配列の入れ方

PHPの無限分類配列の入れ方

王林
王林オリジナル
2023-05-07 18:10:07460ブラウズ

Web 開発では、さまざまな分類システムが広く使用されており、Infinitus 分類は一般的な分類方法の 1 つです。 Infinitus 分類は、分類体系の分類レベルの数を制限しない分類方法を指すため、その配列構造には特別な処理が必要です。

Web開発でよく使われるphp言語ですが、phpの無限分類配列の配置方法について説明します。

  1. 再帰的メソッド

再帰的メソッドは、PHP Infinitus 分類配列で最も一般的に使用されるメソッドで、関数の再帰呼び出しに依存して分類されたデータを構築します。

再帰的メソッドは次のように記述されます:

/**
 * 无限极分类
 * @param array $data         分类数据
 * @param int $pid            父ID
 * @param int $level          层级数
 * @return array              分类数组
 */
function getTree($data, $pid = 0, $level = 0) {
    $tree = [];
    foreach ($data as $val) {
        if ($val['parent_id'] == $pid) {
            $val['level'] = $level;
            $val['children'] = getTree($data, $val['id'], $level + 1);
            $tree[] = $val;
        }
    }
    return $tree;
}

上記のコードでは、getTree 関数は 3 つのパラメーター、つまり分類データ $data、親 ID $pid、レベル数を受け取ります。 $レベル。この関数はまず $tree 配列を作成し、次に分類データを反復処理します。現在の分類項目の親 ID が $pid と等しい場合、その親 ID が $tree 配列に追加されます。各分類項目には、現在のレベル番号を示すレベル属性が追加されます。同時に、getTree 関数はそれ自体を再帰的に呼び出し、サブカテゴリ配列をパラメータとして渡します。これにより、サブカテゴリ項目も同じ方法で処理できます。

  1. ループメソッド

ループメソッドは、PHP Infinitus 分類配列のもう 1 つの処理メソッドであり、主にループの入れ子によって分類されたデータの構築を実現します。

ループ メソッドは次のように記述されます。

/**
 * 无限极分类
 * @param array $data         分类数据
 * @return array              分类数组
 */
function getTree($data) {
    $tree = [];
    $node = [];
    foreach ($data as $val) {
        $node[$val['id']] = $val;
    }
    foreach ($node as $key => &$val) {
        if (isset($node[$val['parent_id']])) {
            $node[$val['parent_id']]['children'][] = &$val;
        } else {
            $tree[] = &$val;
        }
    }
    return $tree;
}

上記のコードでは、getTree 関数は、分類されたデータを表すパラメーター $data を受け取ります。この関数はまず $tree 配列と $node 配列を作成し、$data データを $node 配列に置きます。次に、foreach ループは $node 配列を走査します。現在のカテゴリ項目の親 ID が $node 配列にある場合、現在のカテゴリ項目は親カテゴリ項目の子のサブ配列に追加されます。

$node 配列内の要素はカテゴリ ID に従って格納されるため、処理対象のカテゴリ項目がまだトラバースされていない場合、そのカテゴリ項目は最上位のカテゴリであることを意味するため、カテゴリ項目は $tree 配列に直接追加できます。この関数は最終的に、無限のカテゴリカル配列である $tree 配列を返します。

結論

上記は PHP の無限分類配列を処理する 2 つの方法ですが、再帰的方法はより単純で、ループ方法はより柔軟です。再帰的メソッドは再帰的な関数呼び出しを使用するため、非常に長いデータや大量のデータが発生するとコール スタック オーバーフローなどの問題が発生しますが、ループ メソッドは大量のデータをより適切に処理できます。使用中に、実際の開発ニーズに応じて、適切な方法を選択できます。

以上がPHPの無限分類配列の入れ方の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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