Maison > développement back-end > tutoriel php > 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
Libérer: 2024-06-02 19:28:02
original
1179 Les gens l'ont consulté

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;
  }
}
Copier après la connexion

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

$tree = [
  'value' => 'Root',
  'children' => [
    [
      'value' => 'Child 1',
      'children' => []
    ],
    [
      'value' => 'Child 2',
      'children' => [
        'value' => 'Grandchild'
      ]
    ]
  ]
];
Copier après la connexion

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);
  }
}
Copier après la connexion

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;
    }
  }
}
Copier après la connexion

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);
Copier après la connexion

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal