Maison  >  Article  >  développement back-end  >  Comment déterminer la profondeur d’un tableau PHP multidimensionnel ?

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

Patricia Arquette
Patricia Arquetteoriginal
2024-11-08 10:59:02422parcourir

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;
}

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;
}
  • 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!

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