Maison > développement back-end > tutoriel php > Comment déterminer la profondeur d'un tableau PHP multidimensionnel ?

Comment déterminer la profondeur d'un tableau PHP multidimensionnel ?

Patricia Arquette
Libérer: 2024-11-08 10:59:02
original
489 Les gens l'ont consulté

How to Determine the Depth of a Multidimensional PHP Array?

Détermination de la profondeur d'un tableau PHP multidimensionnel

Les tableaux PHP peuvent contenir des tableaux imbriqués, créant des structures hiérarchiques complexes. Déterminer la profondeur maximale d'imbrication au sein de ces tableaux peut être essentiel pour l'analyse et la manipulation des données.

Fonction pour calculer la profondeur du tableau

Une approche pour déterminer la profondeur d'un tableau consiste à parcourir ses éléments de manière récursive , en comptant le nombre de niveaux. La fonction suivante, array_degree(), prend un tableau en entrée et calcule sa profondeur maximale :

function array_depth($array) {
    $max_depth = 0;

    foreach ($array as $element) {
        if (is_array($element)) {
            $depth = $array_depth($element);
            if ($depth > $max_depth) {
                $max_depth = $depth;
            }
        }
    }

    return $max_depth + 1;
}
Copier après la connexion

Dans cette fonction :

  • La vérification is_array() garantit que les imbriqués les éléments sont traités de manière récursive.
  • La profondeur est incrémentée de 1 pour chaque niveau d'imbrication.
  • La finale renvoyée value représente la profondeur maximale du tableau.

Approche alternative utilisant print_r()

Une autre méthode évite le problème potentiel d'une récursivité infinie. Il utilise l'indentation dans la sortie de print_r(), qui reflète la structure du tableau. La fonction array_degree() ci-dessous utilise cette approche :

function array_depth($array) {
    $max_indentation = 1;

    $array_str = print_r($array, true);
    $lines = explode("\n", $array_str);

    foreach ($lines as $line) {
        $indentation = (strlen($line) - strlen(ltrim($line))) / 4;

        if ($indentation > $max_indentation) {
            $max_indentation = $indentation;
        }
    }

    return ceil(($max_indentation - 1) / 2) + 1;
}
Copier après la connexion
  • print_r() convertit le tableau en une chaîne avec des lignes en retrait pour chaque niveau.
  • La fonction éclater() se divise la chaîne en lignes.
  • L'indentation de chaque ligne est calculée et comparée à l'indentation maximale.
  • L'indentation maximale l'indentation (divisée par 2) représente la profondeur du tableau, car chaque niveau d'indentation indique une augmentation de profondeur de 1.

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!

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal