Heim >Backend-Entwicklung >PHP-Problem >So fügen Sie ein PHP-Array mit unendlicher Klassifizierung ein

So fügen Sie ein PHP-Array mit unendlicher Klassifizierung ein

王林
王林Original
2023-05-07 18:10:07482Durchsuche

In der Webentwicklung werden häufig verschiedene Klassifizierungssysteme verwendet, und die Infinitus-Klassifizierung ist eine der häufigsten Klassifizierungsmethoden. Die Infinitus-Klassifizierung bezieht sich auf eine Klassifizierungsmethode, die die Anzahl der Klassifizierungsebenen im Klassifizierungssystem nicht begrenzt, sodass ihre Array-Struktur eine spezielle Verarbeitung erfordert.

Die PHP-Sprache wird häufig in der Webentwicklung verwendet. Lassen Sie uns die Platzierungsmethode des PHP-Infinite-Klassifizierungsarrays besprechen.

  1. Rekursive Methode

Die rekursive Methode ist die am häufigsten verwendete Methode im kategorialen Array von PHP Infinitus. Sie basiert auf rekursiven Funktionsaufrufen, um kategoriale Daten zu erstellen.

Die rekursive Methode ist wie folgt geschrieben:

/**
 * 无限极分类
 * @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;
}

Im obigen Code empfängt die getTree-Funktion drei Parameter, nämlich die Klassifizierungsdaten $data, die übergeordnete ID $pid und die Anzahl der Ebenen $level. Die Funktion erstellt zunächst ein $tree-Array, durchläuft dann die Klassifizierungsdaten und wenn die übergeordnete ID des aktuellen Klassifizierungselements gleich $pid ist, wird sie dem $tree-Array hinzugefügt. Zu jedem Klassifizierungselement wird ein Ebenenattribut hinzugefügt, das die aktuelle Ebenennummer angibt. Gleichzeitig ruft sich die Funktion getTree rekursiv auf und übergibt das Unterkategorie-Array als Parameter, sodass auch die Unterkategorieelemente auf die gleiche Weise verarbeitet werden können.

  1. Loop-Methode

Die Loop-Methode ist eine weitere Verarbeitungsmethode im PHP Infinitus-Klassifizierungsarray. Sie realisiert hauptsächlich die Konstruktion klassifizierter Daten durch Schleifenverschachtelung.

Die Schleifenmethode ist wie folgt geschrieben:

/**
 * 无限极分类
 * @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;
}

Im obigen Code empfängt die getTree-Funktion einen Parameter $data, der klassifizierte Daten darstellt. Die Funktion erstellt zunächst ein $tree-Array und ein $node-Array und fügt die $data-Daten in das $node-Array ein. Anschließend durchläuft die foreach-Schleife das $node-Array. Wenn sich die übergeordnete ID des aktuellen Kategorieelements im $node-Array befindet, wird das aktuelle Kategorieelement zum untergeordneten Unterarray des übergeordneten Kategorieelements hinzugefügt.

Da die Elemente im $node-Array gemäß der Kategorie-ID gespeichert werden, bedeutet dies, dass das Kategorieelement eine Kategorie der obersten Ebene ist, wenn das zu verarbeitende Kategorieelement nicht durchlaufen wurde, sodass das Kategorieelement direkt sein kann zum $tree-Array hinzugefügt. Die Funktion gibt schließlich das $tree-Array zurück, bei dem es sich um ein unendliches kategoriales Array handelt.

Fazit

Die oben genannten Methoden sind zwei Methoden zur Verarbeitung von PHP-Infinite-Klassifizierungsarrays. Die rekursive Methode ist einfacher und die Schleifenmethode flexibler. Da die rekursive Methode rekursive Funktionsaufrufe verwendet, treten bei extrem langen oder großen Datenmengen Probleme wie ein Aufrufstapelüberlauf auf, während die Schleifenmethode große Datenmengen besser verarbeiten kann. Während der Nutzung können Sie eine Methode auswählen, die Ihren tatsächlichen Entwicklungsanforderungen entspricht.

Das obige ist der detaillierte Inhalt vonSo fügen Sie ein PHP-Array mit unendlicher Klassifizierung ein. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn