Maison > développement back-end > Problème PHP > Comment déterminer les dimensions d'un tableau en php

Comment déterminer les dimensions d'un tableau en php

PHPz
Libérer: 2023-04-27 09:20:23
original
1129 Les gens l'ont consulté

En PHP, le tableau est l'un des types de données les plus courants. Grâce aux tableaux, vous pouvez combiner un ensemble de données d'une certaine manière pour faciliter l'exploitation et la gestion de nos données. Les dimensions d'un tableau sont un moyen pour nous de classer et de décrire les tableaux.

En PHP, les dimensions d'un tableau sont décrites en fonction de la structure imbriquée des éléments du tableau. Si un tableau ne contient qu'un seul élément, la dimension du tableau est 1, par exemple :

$arr = array(1, 2, 3, 4);
echo count($arr); // 输出 4
Copier après la connexion

Le tableau ci-dessus ne contient qu'un seul élément, donc sa dimension est 1 et la longueur du tableau est 4.

Si un tableau contient d'autres éléments du tableau, la dimension du tableau devient le nombre de niveaux contenant le tableau imbriqué. Par exemple :

$arr2 = array(
    1, 
    array(
        2, 
        array(3, 4), 
        5
    ),
    6,
    array(7, 8)
);
echo count($arr2); // 输出 4
Copier après la connexion

Le tableau ci-dessus contient deux tableaux imbriqués, donc sa dimension est de 2 et la longueur du tableau est de 4.

Alors comment déterminer les dimensions d'un tableau ? Voici plusieurs méthodes :

1. Utiliser la récursivité pour déterminer les dimensions d'un tableau

La récursion est une idée largement utilisée en informatique, qui permet de traiter des données imbriquées à plusieurs niveaux. Nous pouvons utiliser la récursion pour déterminer la dimension du tableau. Le code est le suivant :

// 递归计算数组维度
function getDimension($arr)
{
    if (!is_array($arr)) {
        return 0;
    } else {
        $max = 0;
        foreach ($arr as $subArr) {
            $subArrDimension = getDimension($subArr);
            if ($subArrDimension > $max) {
                $max = $subArrDimension;
            }
        }
        return $max + 1;
    }
}
Copier après la connexion

La fonction ci-dessus getDimension($arr) peut accepter n'importe quel tableau et calculer la dimension du tableau de manière récursive. Parmi eux, is_array($arr) est utilisé pour déterminer si l'élément est de type tableau. S'il ne s'agit pas d'un type de tableau, 0 est renvoyé, indiquant que la dimension de l'élément est 0. S'il s'agit d'un type de tableau, parcourez les éléments du tableau, en calculant de manière récursive les dimensions de ses sous-tableaux à chaque fois, et retournez enfin la plus grande dimension du sous-tableau. getDimension($arr) 可以接受任意一个数组,并通过递归的方式计算数组的维度。其中 is_array($arr) 用于判断该元素是否为数组类型,如果不是数组类型,则返回 0,表示该元素的维度为 0。 如果它是一个数组类型,则遍历该数组元素,每次递归计算它的子数组的维度,最终返回子数组中最大的维度。

2. 使用 foreach 嵌套判断数组的维度

实际上,我们也可以通过嵌套的 foreach 循环来判断数组的维度。如果一个数组的所有元素都不是数组类型,那它的维度为 1;如果它包含了数组类型的元素,则它的维度等于其中最内层子数组的维度加 1。代码如下:

// 使用 foreach 嵌套计算维度
function getDimension2($arr)
{
    if (!is_array($arr)) {
        return 0;
    } else {
        $depth = 1;
        foreach ($arr as $subArr) {
            if (is_array($subArr)) {
                $subArrDepth = getDimension2($subArr) + 1;
                if ($subArrDepth > $depth) {
                    $depth = $subArrDepth;
                }
            }
        }
        return $depth;
    }
}
Copier après la connexion

上述代码定义了函数 getDimension2($arr),它的计算方式与 getDimension($arr) 相同,只是使用了嵌套的 foreach 循环。其中,如果一个元素不是数组类型,则直接返回 0;如果它是数组类型,则遍历每一个元素,计算出最内层子数组的维度,然后将其加 1 即可。

3. 使用 array_filter 函数判断数组的维度

PHP 内置函数 array_filter() 可以用于过滤数组中不符合条件的元素,并根据过滤结果返回一个新的数组。我们可以利用它来判断数组的维度。代码如下:

// 使用 array_filter 函数计算维度
function getDimension3($arr)
{
    if (!is_array($arr)) {
        return 0;
    } else {
        $child = current($arr);
        $notEmpty = array_filter($arr);
        if (count($notEmpty) == 0) {
            return 1;
        } else {
            return is_array($child) ? getDimension3($child) + 1 : 1;
        }
    }
}
Copier après la connexion

上述代码定义了函数 getDimension3($arr),它利用了 array_filter() 函数。其中,使用 current($arr) 取出数组中的第一个元素,判断该元素是否为数组类型。如果它不是数组类型,则说明该数组的维度为 1;如果它是数组类型,则使用 array_filter($arr) 把该数组中所有的空元素过滤掉,并根据返回的新数组的长度来判断该数组的维度。

4. 使用 str_repeat 函数判断数组的维度

还有一种简单的方法是通过字符串长度的变化来判断数组的维度,这里我们使用 str_repeat 函数。具体实现如下:

// 使用 str_repeat 函数计算维度
function getDimension4($arr)
{
    $temp = $arr;
    $i = 0;
    while (is_array($temp)) {
        $temp = current($temp);
        $i++;
        $str = str_repeat('.', $i);
        echo '<pre class="brush:php;toolbar:false">'.$str.implode($str, $temp).'
';     }     return $i; }
Copier après la connexion

上述代码定义了函数 getDimension4($arr),它利用了 PHP 中的 current() 函数和 str_repeat()

2. Utilisez des foreach imbriqués pour déterminer les dimensions du tableau

En fait, nous pouvons également déterminer les dimensions du tableau grâce à des boucles foreach imbriquées. Si tous les éléments d'un tableau ne sont pas de type tableau, sa dimension est 1 ; s'il contient des éléments de type tableau, sa dimension est égale à la dimension du sous-tableau le plus interne plus 1. Le code est le suivant : 🎜rrreee🎜Le code ci-dessus définit la fonction getDimension2($arr), sa méthode de calcul est la même que getDimension($arr), mais en utilisant imbriqué pour chaque cycle. Parmi eux, si un élément n'est pas de type tableau, 0 est renvoyé directement ; s'il s'agit d'un type de tableau, chaque élément est parcouru, la dimension du sous-tableau le plus interne est calculée, puis 1 y est ajouté. 🎜🎜3. Utilisez la fonction array_filter pour déterminer les dimensions du tableau 🎜🎜La fonction intégrée PHP array_filter() peut être utilisée pour filtrer les éléments du tableau qui ne remplissent pas les conditions et renvoyer un nouveau tableau basé sur les résultats du filtrage. Nous pouvons l'utiliser pour déterminer les dimensions du tableau. Le code est le suivant : 🎜rrreee🎜Le code ci-dessus définit la fonction getDimension3($arr), qui utilise la fonction array_filter(). Parmi eux, utilisez current($arr) pour supprimer le premier élément du tableau et déterminer si l'élément est de type tableau. S'il ne s'agit pas d'un type tableau, cela signifie que la dimension du tableau est 1 ; s'il s'agit d'un type tableau, utilisez array_filter($arr) pour filtrer tous les éléments vides du tableau, et basé sur le retour La longueur du nouveau tableau est utilisée pour déterminer les dimensions du tableau. 🎜🎜4. Utilisez la fonction str_repeat pour déterminer la dimension du tableau 🎜🎜Une autre méthode simple consiste à déterminer la dimension du tableau en modifiant la longueur de la chaîne. L'implémentation spécifique est la suivante : 🎜rrreee🎜Le code ci-dessus définit la fonction getDimension4($arr), qui utilise la fonction current() et str_repeat() Fonction . Utilisez une boucle while à l'intérieur de la fonction pour parcourir en continu les sous-tableaux imbriqués dans le tableau, imprimez une chaîne espacée à chaque passage et enfin renvoyez la valeur de i. 🎜🎜Ci-dessus, il existe plusieurs façons de déterminer les dimensions d'un tableau, parmi lesquelles les méthodes d'implémentation de récursivité et foreach sont plus couramment utilisées. Les développeurs peuvent choisir d'utiliser différentes méthodes pour le mettre en œuvre en fonction de la situation réelle. 🎜

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