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

Comment effacer les tableaux vides dans les tableaux bidimensionnels en php

PHPz
PHPzoriginal
2023-04-19 09:15:49796parcourir

Dans les opérations de tableau PHP, nous rencontrons souvent des valeurs nulles dans le tableau, ce qui affecte généralement les opérations de traitement de données ultérieures, de sorte que les valeurs nulles (chaîne vide, faux, nul, etc.) dans le tableau doivent être effacées. Cet article explique comment effacer les tableaux vides dans les tableaux bidimensionnels.

En PHP, vous pouvez utiliser la fonction array_filter pour effacer les valeurs vides dans un tableau. Cette fonction peut accepter deux paramètres, le premier paramètre représente le tableau à filtrer et le deuxième paramètre représente la fonction de rappel à utiliser. La fonction de rappel peut spécifier les valeurs à filtrer. Par exemple, si nous voulons filtrer les chaînes vides et fausses, nous pouvons définir la fonction de rappel comme ceci :

function my_callback($value){
    return $value !== '' && $value !== false;
}

où $value représente chaque élément du tableau, et utilisez l'opérateur !== pour déterminer si la condition est satisfaite. Utilisez ensuite la fonction array_filter pour filtrer le tableau :

$arr = array('a', '', 'b', false, null);
$new_arr = array_filter($arr, 'my_callback');
print_r($new_arr);

Le résultat de sortie est :

Array
(
    [0] => a
    [2] => b
)

Comme vous pouvez le voir, les chaînes vides et false sont filtrées. Mais lorsqu’il s’agit de tableaux bidimensionnels, les choses deviennent un peu plus compliquées.

Considérons le tableau 2D suivant :

$arr = array(
    array('a', '', 'b'),
    array('c', false, null),
    array('', 'd', 'e')
);

Notre objectif est de le débarrasser des tableaux vides. À l'aide de la fonction array_filter, les conditions de filtre peuvent être écrites sous la forme suivante :

function my_callback($row){
    return array_filter($row, function($value){
        return $value !== '' && $value !== false;
    });
}

où $row représente chaque ligne du tableau bidimensionnel, utilisez array_filter pour filtrer les éléments de chaque ligne, puis renvoyez le résultat.

Ensuite, nous pouvons utiliser la fonction array_map pour appliquer cette fonction de rappel à chaque ligne du tableau à deux dimensions :

$new_arr = array_map('my_callback', $arr);
print_r($new_arr);

Le résultat de sortie est :

Array
(
    [0] => Array
        (
            [0] => a
            [2] => b
        )

    [1] => Array
        (
            [0] => c
        )

    [2] => Array
        (
            [1] => d
            [2] => e
        )

)

Comme vous pouvez le voir, le tableau vide a été effacé. Il convient de noter que le résultat renvoyé en utilisant la fonction array_map est toujours un tableau à deux dimensions et que chaque ligne peut contenir un nombre différent d'éléments, le tableau devra donc peut-être être réindexé à l'aide de la fonction array_values ​​​​​​.

$new_arr = array_map('my_callback', $arr);
$new_arr = array_map('array_values', $new_arr);
print_r($new_arr);

Le résultat de sortie est :

Array
(
    [0] => Array
        (
            [0] => a
            [1] => b
        )

    [1] => Array
        (
            [0] => c
        )

    [2] => Array
        (
            [0] => d
            [1] => e
        )

)

Vous pouvez voir que le tableau a été réindexé.

Pour résumer, la suppression des tableaux vides dans un tableau bidimensionnel peut être obtenue en combinant les fonctions array_filter et array_map. Vous devez écrire deux fonctions de rappel, une pour filtrer les éléments et une pour réindexer le tableau filtré. L’avantage de cette méthode est qu’elle est simple et facile à comprendre, mais l’inconvénient est que le code est relativement long. Pour les programmes nécessitant des opérations fréquentes sur les tableaux, vous souhaiterez peut-être envisager d’utiliser un algorithme plus efficace.

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