Maison  >  Article  >  développement back-end  >  Comment supprimer les tableaux vides dans les tableaux multidimensionnels en php

Comment supprimer les tableaux vides dans les tableaux multidimensionnels en php

PHPz
PHPzoriginal
2023-04-19 11:39:32583parcourir

Avec le développement de PHP, PHP est devenu l'un des langages les plus utilisés dans le domaine du développement web. Dans le développement réel, les développeurs doivent souvent gérer des tableaux vides dans des tableaux multidimensionnels, ce qui non seulement gaspille de la mémoire, mais a également un impact important sur le traitement des données et l'efficacité du code. Par conséquent, cet article expliquera comment supprimer rapidement les tableaux vides des tableaux multidimensionnels en PHP et améliorer l'efficacité du code.

1. Définition des tableaux multidimensionnels et des tableaux vides

En PHP, un tableau multidimensionnel signifie que le tableau contient un autre tableau. Par exemple :

$multi_array = array(
    array('A','B','C'),
    array('D','E','F'),
    array('G','H','I')
);

Un tableau vide est un tableau qui est vide (c'est-à-dire qui n'a aucune valeur) à une certaine position dans le tableau multidimensionnel. Par exemple :

$multi_array = array(
    array('A','B',),
    array('','F','G'),
    array('','J','K')
);

Dans l'exemple ci-dessus, la première position de la deuxième ligne et la première position de la troisième ligne sont des tableaux vides.

2. Méthodes pour supprimer les tableaux vides

1. Utilisez la boucle foreach

C'est la méthode la plus basique. Nous pouvons utiliser foreach pour boucler un tableau multidimensionnel et utiliser la fonction unset() pour supprimer le tableau vide en fonction. à la situation. Cette méthode est simple et facile à comprendre, mais elle aura un certain impact sur l'efficacité du code, notamment lors du traitement de données à grande échelle.

foreach($multi_array as $k=>$v){
    if(is_array($v)){
        foreach($v as $key=>$val){
            if($val === '' || $val === null){ 
                unset($multi_array[$k][$key]);
             }
        }
    }
    if(empty($multi_array[$k])){ 
        unset($multi_array[$k]); 
    }
}

2. Utilisez la fonction array_filter()

La fonction array_filter() peut filtrer chaque élément d'un tableau multidimensionnel et renvoyer des éléments dont la valeur du tableau n'est pas vide. Cette fonction ne peut supprimer que les valeurs nulles dans un tableau unidimensionnel, nous devons donc utiliser la fonction array_map() pour traiter les tableaux multidimensionnels.

function array_filter_recursive($input)
{
    foreach($input as &$value) {
        if(is_array($value)){
            $value = array_filter_recursive($value);
        }
    }
    return array_filter($input);
}

$multi_array = array_filter_recursive($multi_array);

3. Utilisez la fonction array_walk()

La fonction array_walk() est utilisée pour parcourir chaque élément du tableau, permettant aux développeurs de traiter les données dans la fonction de rappel. Dans cette méthode, nous calculons le nombre d'éléments dans le tableau multidimensionnel via la fonction de rappel. Si le nombre d'éléments est 0, le tableau est supprimé du tableau multidimensionnel.

function remove_empty_arrays(&$value)
{
    if (is_array($value)) {
        $value = array_filter($value, 'remove_empty_arrays');
    }
    return (!empty($value) || $value === '0');
}

array_walk($multi_array, 'remove_empty_arrays');

3. Résumé

En PHP, gérer des tableaux vides dans des tableaux multidimensionnels est souvent l'un des problèmes que les développeurs doivent résoudre. Cet article présente trois méthodes de traitement courantes : utiliser une boucle foreach, utiliser la fonction array_filter() et utiliser la fonction array_walk(). Pour le traitement de données à grande échelle, nous devons choisir des méthodes plus efficaces pour améliorer l'efficacité et les performances du code.

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