Maison  >  Article  >  développement back-end  >  Structure des données PHP : exploration de l'arborescence, maîtrise de l'organisation des données hiérarchiques

Structure des données PHP : exploration de l'arborescence, maîtrise de l'organisation des données hiérarchiques

WBOY
WBOYoriginal
2024-06-02 19:28:021141parcourir

Une structure arborescente est une structure non linéaire qui organise hiérarchiquement les données et peut être représentée et parcourue de manière récursive ou itérative en PHP. Les méthodes de représentation incluent la récursivité (en utilisant la classe) et l'itération (en utilisant un tableau) ; les méthodes de parcours incluent le parcours récursif et le parcours itératif (en utilisant la pile). Dans le cas réel, l'arborescence des répertoires du système de fichiers est organisée efficacement à l'aide d'une structure arborescente pour faciliter la navigation et l'obtention d'informations.

Structure des données PHP : exploration de larborescence, maîtrise de lorganisation des données hiérarchiques

Exploration de la structure arborescente PHP : un outil puissant pour l'organisation hiérarchique des données

La structure arborescente est une structure de données non linéaire qui organise les données de manière hiérarchique, ce qui est très approprié pour les données qui doivent exprimer des relations hiérarchiques . En PHP, les structures arborescentes peuvent être représentées et parcourues par récursivité ou itération.

Représenter une structure arborescente

Il existe deux manières principales de représenter une structure arborescente en PHP :

Représentation récursive :

class Node {
  public $value;
  public $children = [];

  public function __construct($value) {
    $this->value = $value;
  }

  public function addChild(Node $child) {
    $this->children[] = $child;
  }
}

Représentation itérative (à l'aide de tableaux) :

$tree = [
  'value' => 'Root',
  'children' => [
    [
      'value' => 'Child 1',
      'children' => []
    ],
    [
      'value' => 'Child 2',
      'children' => [
        'value' => 'Grandchild'
      ]
    ]
  ]
];

Parcours de la structure arborescente

La structure des arbres peut être traversée de deux manières suivantes:

Récursive Traversion:

function traverseRecursively($node) {
  echo $node->value . PHP_EOL;
  foreach ($node->children as $child) {
    traverseRecursively($child);
  }
}

iterative Traversal (Utilisation de la pile):

R
function traverseIteratively($node) {
  $stack = [$node];
  while (!empty($stack)) {
    $current = array_pop($stack);
    echo $current->value . PHP_EOL;
    foreach (array_reverse($current->children) as $child) {
      $stack[] = $child;
    }
  }
}

Case pratique: arbre du répertoire du système de fichiers

Consider a Arborescence de répertoires du système de fichiers dans laquelle chaque répertoire contient des sous-répertoires et des fichiers. Cette structure de données peut être organisée et représentée efficacement à l’aide d’une structure arborescente.

class Directory {
  public $name;
  public $children = [];

  public function __construct($name) {
    $this->name = $name;
  }

  public function addChild(Node $child) {
    $this->children[] = $child;
  }
}

$root = new Directory('/');

$dir1 = new Directory('dir1');
$dir2 = new Directory('dir2');
$dir3 = new Directory('dir3');

$file1 = new File('file1.txt');
$file2 = new File('file2.php');

$dir1->addChild($file1);
$dir2->addChild($file2);
$root->addChild($dir1);
$root->addChild($dir2);
$root->addChild($dir3);

traverseRecursively($root);

En utilisant la structure arborescente, nous pouvons facilement parcourir et organiser l'arborescence des répertoires du système de fichiers et obtenir efficacement les informations requises.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn