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.
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:
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], ]
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.
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!