Heim  >  Artikel  >  Backend-Entwicklung  >  PHP-Implementierungsmethode zum Erhalten eines N-Schicht-Klassifizierungsbaums aus einem zweidimensionalen Array

PHP-Implementierungsmethode zum Erhalten eines N-Schicht-Klassifizierungsbaums aus einem zweidimensionalen Array

墨辰丷
墨辰丷Original
2018-06-01 10:02:561435Durchsuche

In diesem Artikel wird hauptsächlich der Implementierungscode von PHP vorgestellt, um einen N-Layer-Klassifizierungsbaum aus einem zweidimensionalen Array zu erhalten. Freunde, die ihn benötigen, können darauf verweisen

Die Produktklassifizierung des Unternehmens ist in einer Tabelle vorhanden. wobei mid sein übergeordnetes Element identifiziert. Zur Klassifizierung muss ein hierarchisches Array für nachfolgende Operationen erstellt werden.

Nachdem ich eine Weile darüber nachgedacht hatte, fiel mir keine Möglichkeit ein, die Datenbank wiederholt zu lesen, oder eine Operation, die keine Rekursion erforderte.

Datenquelle: (Die Daten erfordern, dass die ID des eindimensionalen Schlüssels und des entsprechenden zweidimensionalen Wertarrays identisch sein müssen)

$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' => 2, 'name' => '哈尔滨市'),
    5 => array('id' => 5, 'pid' => 2, 'name' => '鸡西市'),
    6 => array('id' => 6, 'pid' => 4, 'name' => '香坊区'),
    7 => array('id' => 7, 'pid' => 4, 'name' => '南岗区'),
    8 => array('id' => 8, 'pid' => 6, 'name' => '和兴路'),
    9 => array('id' => 9, 'pid' => 7, 'name' => '西大直街'),
    10 => array('id' => 10, 'pid' => 8, 'name' => '东北林业大学'),
    11 => array('id' => 11, 'pid' => 9, 'name' => '哈尔滨工业大学'),
    12 => array('id' => 12, 'pid' => 8, 'name' => '哈尔滨师范大学'),
    13 => array('id' => 13, 'pid' => 1, 'name' => '赣州市'),
    14 => array('id' => 14, 'pid' => 13, 'name' => '赣县'),
    15 => array('id' => 15, 'pid' => 13, 'name' => '于都县'),
    16 => array('id' => 16, 'pid' => 14, 'name' => '茅店镇'),
    17 => array('id' => 17, 'pid' => 14, 'name' => '大田乡'),
    18 => array('id' => 18, 'pid' => 16, 'name' => '义源村'),
    19 => array('id' => 19, 'pid' => 16, 'name' => '上坝村'),
);

Funktion zum Generieren eines Baums:

function genTree9($items) {
    $tree = array();
    foreach ($items as $item)
        if (isset($items[$item['pid']]))
            $items[$item['pid']]['son'][] = &$items[$item['id']];
        else
            $tree[] = &$items[$item['id']];
    return $tree;
}

Natürlich. Wenn die Daten bestimmte Bedingungen erfüllen, kann die Funktion auf nur 5 Zeilen reduziert werden:

function genTree5($items) {
    foreach ($items as $item)
        $items[$item['pid']]['son'][$item['id']] = &$items[$item['id']];
    return isset($items[0]['son']) ? $items[0]['son'] : array();
}

Einmal Schleife, Speicherreferenz. Sparen Sie Zeit und Platz.

Zusammenfassung: Das Obige ist der gesamte Inhalt dieses Artikels, ich hoffe, dass er für das Studium aller hilfreich sein wird.

Verwandte Empfehlungen:

array_keys in php gibt den Schlüsselnamen des Arrays zurück

foreach in PHP-Nutzung

PHP Excel-Datei in MySQL-Datenbank importieren

Das obige ist der detaillierte Inhalt vonPHP-Implementierungsmethode zum Erhalten eines N-Schicht-Klassifizierungsbaums aus einem zweidimensionalen Array. 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