Heim  >  Artikel  >  Backend-Entwicklung  >  So konvertieren Sie unendliche kategoriale Daten in PHP in Array-Form

So konvertieren Sie unendliche kategoriale Daten in PHP in Array-Form

PHPz
PHPzOriginal
2023-04-18 15:20:21500Durchsuche

Bei der Entwicklung mit PHP ist eine unbegrenzte Klassifizierung eine häufige und wichtige Anforderung. Aus Gründen der Benutzerfreundlichkeit und Bedienung konvertieren wir normalerweise unendliche Kategorien in Array-Form. So konvertieren Sie unendliche kategoriale Daten in Array-Form.

  1. Definieren Sie das Format für unendliche kategoriale Daten.

Bevor wir beginnen, müssen wir das Format für unendliche kategoriale Daten festlegen. Im Allgemeinen besteht ein grundlegendes unendliches Klassifizierungsdatenformat aus den folgenden Feldern:

  • id: eindeutige Kennung, normalerweise eine automatisch inkrementierende ID.
  • Name: Kategoriename.
  • pid: Klassifizierungs-ID der oberen Ebene, 0, wenn es sich um die Klassifizierung der ersten Ebene handelt.
  • level: Klassifizierungsebene, 1, wenn es sich um die Klassifizierung der ersten Ebene handelt.

Zum Beispiel lauten einfache unendliche kategoriale Daten wie folgt:

[
    ['id' => 1, 'name' => '电子产品', 'pid' => 0, 'level' => 1],
    ['id' => 2, 'name' => '手机', 'pid' => 1, 'level' => 2],
    ['id' => 3, 'name' => '电脑', 'pid' => 1, 'level' => 2],
    ['id' => 4, 'name' => '智能手机', 'pid' => 2, 'level' => 3],
    ['id' => 5, 'name' => '笔记本电脑', 'pid' => 3, 'level' => 3],
]
  1. Konvertierungsfunktion definieren

Wir können eine rekursive Funktion definieren, um unendliche kategoriale Daten in Array-Form umzuwandeln. Der Code dieser Funktion lautet wie folgt:

function categoryToTree($source, $parentId = 0) {   
    $result = [];
   
    foreach ($source as $key => $value) {
        if ($value['pid'] == $parentId) {       
            unset($source[$key]);          
            $children = categoryToTree($source, $value['id']);     
            if (!empty($children)) {
                $value['children'] = $children;
            }
            $result[] = $value;         
        }
    }
   
    return $result;
}

Wir verwenden Rekursion, um eine unendliche Klassifizierungsumwandlung zu erreichen. Konkret ermitteln wir zunächst, ob es sich um eine Unterkategorie der aktuellen Kategorie handelt, und verarbeiten die Unterkategorien rekursiv. Andernfalls überspringen wir die Kategorie und verarbeiten die nächsten kategorisierten Daten.

Beachten Sie, dass wir bei der rekursiven Verarbeitung von Unterkategorien $source 数组传入。为了保证每个分类只被处理一次,我们需要将已经处理过的分类数据从 $source aus dem Array löschen.

  1. Transformation durchführen

Mit der oben definierten Transformationsfunktion können wir unendliche kategoriale Daten in Array-Form umwandeln. Beispielsweise führen wir den folgenden Code aus:

$data = [
    ['id' => 1, 'name' => '电子产品', 'pid' => 0, 'level' => 1],
    ['id' => 2, 'name' => '手机', 'pid' => 1, 'level' => 2],
    ['id' => 3, 'name' => '电脑', 'pid' => 1, 'level' => 2],
    ['id' => 4, 'name' => '智能手机', 'pid' => 2, 'level' => 3],
    ['id' => 5, 'name' => '笔记本电脑', 'pid' => 3, 'level' => 3],
];

$result = categoryToTree($data);

print_r($result);

Die Ausgabe lautet wie folgt:

Array
(
    [0] => Array
        (
            [id] => 1
            [name] => 电子产品
            [pid] => 0
            [level] => 1
            [children] => Array
                (
                    [0] => Array
                        (
                            [id] => 2
                            [name] => 手机
                            [pid] => 1
                            [level] => 2
                            [children] => Array
                                (
                                    [0] => Array
                                        (
                                            [id] => 4
                                            [name] => 智能手机
                                            [pid] => 2
                                            [level] => 3
                                        )
   
                                )
   
                        )
   
                    [1] => Array
                        (
                            [id] => 3
                            [name] => 电脑
                            [pid] => 1
                            [level] => 2
                            [children] => Array
                                (
                                    [0] => Array
                                        (
                                            [id] => 5
                                            [name] => 笔记本电脑
                                            [pid] => 3
                                            [level] => 3
                                        )
   
                                )
   
                        )
   
                )
   
        )
   
)

Wie Sie sehen können, haben wir unendliche Kategoriedaten in Array-Form konvertiert und jede Kategorie enthält ihre Unterkategorien. Auf diese Weise können wir Array-Funktionen problemlos verwenden, um unbegrenzte kategoriale Daten zu verarbeiten.

Das obige ist der detaillierte Inhalt vonSo konvertieren Sie unendliche kategoriale Daten in PHP in Array-Form. 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