Dans le processus de développement avec PHP, une classification illimitée est une exigence courante et importante. Pour plus de commodité d'utilisation et de fonctionnement, nous convertissons généralement des catégories infinies sous forme de tableau. Voici comment convertir des données catégorielles infinies sous forme de tableau.
Avant de commencer, nous devons établir le format des données catégorielles infinies. De manière générale, un format de base de données de classification infinie se compose des champs suivants :
Par exemple, une simple donnée catégorielle infinie est la suivante :
[ ['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], ]
Nous pouvons définir une fonction récursive pour convertir des données catégorielles infinies sous forme de tableau. Le code de cette fonction est le suivant :
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; }
Nous utilisons la récursivité pour réaliser une conversion de classification infinie. Plus précisément, pour chaque donnée de catégorie, nous déterminons d'abord s'il s'agit d'une sous-catégorie de la catégorie actuelle. Si c'est le cas, ajoutons-la au tableau de résultats et traitons ses sous-catégories de manière récursive ; sinon, sautons la catégorie et traitons directement la suivante.
Notez que lors du traitement récursif des sous-catégories, nous supprimerons $source
数组传入。为了保证每个分类只被处理一次,我们需要将已经处理过的分类数据从 $source
du tableau.
En utilisant la fonction de transformation définie ci-dessus, nous pouvons transformer des données catégorielles infinies sous forme de tableau. Par exemple, nous exécutons le code suivant :
$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);
Le résultat est le suivant :
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 ) ) ) ) ) )
Comme vous pouvez le voir, nous avons converti les données de catégories infinies sous forme de tableau, et chaque catégorie contient ses sous-catégories. De cette façon, nous pouvons facilement utiliser des fonctions de tableau pour traiter un nombre illimité de données catégorielles.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!