Position actuelle: Accueil> Derniers articles> array_filter () comment gérer les tableaux d'objets

array_filter () comment gérer les tableaux d'objets

M66 2025-06-04

Array_Filter () est une fonction très couramment utilisée dans PHP, qui est utilisée pour filtrer les éléments dans un tableau basé sur les fonctions de rappel. Lorsque vous passez un tableau à array_filter () , il iratera le tableau et déterminera quels éléments sont conservés et quels éléments sont supprimés en fonction de la valeur de retour de la fonction de rappel que vous fournissez. Bien que la majeure partie de l'application de Array_Filter () se concentre sur la gestion des tableaux simples, il y a des choses spéciales dans le comportement lorsqu'elle est appliquée aux tableaux contenant des objets.

array_filter () utilisation de base

Tout d'abord, jetons un coup d'œil à l'utilisation de base de Array_Filter () , qui est définie comme suit:

 array_filter(array $array, callable $callback = null, int $mode = 0): array
  • $ tableau : le tableau d'entrée à filtrer.

  • $ rappel : fonction de rappel pour déterminer si chaque élément répond aux critères.

  • MODE $ : Ce paramètre détermine si la valeur de clé dans le tableau renvoyé est conservée ou réindexée.

Si aucune fonction de rappel n'est fournie, array_filter () supprime tous les éléments du tableau avec une valeur de faux .

 $array = [0, 1, 2, 3, 4, 5];
$result = array_filter($array);
// Sortir [1, 2, 3, 4, 5]

array_filter () gère le tableau d'objets

Lorsque les éléments d'un tableau sont des objets, array_filter () fonctionne de la même manière que lors de la gestion des tableaux normaux, mais la fonction de rappel reçoit chaque objet comme un argument. Par conséquent, dans la fonction de rappel, vous pouvez décider de conserver l'objet en fonction des attributs de l'objet.

Exemple: filtrage d'un tableau d'objets

Supposons que nous ayons un tableau contenant plusieurs objets utilisateur , chaque objet utilisateur a des propriétés de nom et d'âge . Nous voulons filtrer les utilisateurs de plus de 18 ans.

 class User {
    public $name;
    public $age;

    public function __construct($name, $age) {
        $this->name = $name;
        $this->age = $age;
    }
}

$users = [
    new User('Alice', 25),
    new User('Bob', 17),
    new User('Charlie', 30),
    new User('David', 15)
];

$filteredUsers = array_filter($users, function($user) {
    return $user->age > 18;
});

foreach ($filteredUsers as $user) {
    echo $user->name . " is over 18 years old.\n";
}

résultat:

 Alice is over 18 years old.
Charlie is over 18 years old.

Dans l'exemple ci-dessus, nous filtrons les utilisateurs de plus de 18 ans via la fonction de rappel. La fonction de rappel accepte un objet utilisateur comme un paramètre et détermine si l'objet remplit les conditions via $ user-> Âge .

Remarque: comparaison des objets

Lorsqu'un objet est un élément de tableau, array_filter () passe l'objet entier à la fonction de rappel. Dans PHP, la comparaison des objets est généralement effectuée par référence, donc si vous souhaitez comparer les propriétés d'un objet, vous devez extraire explicitement les propriétés de l'objet dans la fonction de rappel.

Exemple: vérification d'un attribut d'un objet

Nous pouvons également filtrer les objets dont le nom contient des caractères spécifiques. Par exemple, nous voulons seulement filtrer les utilisateurs dont les noms contiennent la lettre "A".

 $filteredUsers = array_filter($users, function($user) {
    return strpos($user->name, 'a') !== false;
});

foreach ($filteredUsers as $user) {
    echo $user->name . " has an 'a' in their name.\n";
}

résultat:

 Alice has an 'a' in their name.
Charlie has an 'a' in their name.

Dans cet exemple, nous vérifions si le nom de l'utilisateur contient la lettre "A" via la fonction strPos () .

array_filter () et référence d'objet

Il convient de noter que lorsque Array_Filter () traite les tableaux d'objets, les éléments de chaque objet dans le tableau sont toujours passés par référence. Si vous modifiez les propriétés d'un objet dans la fonction de rappel, ces modifications affecteront les objets du tableau d'origine. En effet, les objets PHP sont passés par référence.

Exemple: modifiez les propriétés d'un objet

 $filteredUsers = array_filter($users, function($user) {
    if ($user->age > 18) {
        $user->age += 1;  // Modifier les propriétés de l'objet
        return true;
    }
    return false;
});

foreach ($filteredUsers as $user) {
    echo $user->name . " is now " . $user->age . " years old.\n";
}

résultat:

 Alice is now 26 years old.
Charlie is now 31 years old.

Dans cet exemple, nous modifions l'attribut d'âge des utilisateurs de plus de 18 ans via la fonction de rappel, et cette modification affecte le tableau d'origine.

array_filter () opérations liées à l'URL

Lorsque vous travaillez sur un tableau d'objets, vous devrez peut-être également utiliser l'URL. Par exemple, vous devrez peut-être filtrer les objets qui contiennent certains noms de domaine dans l'URL. Si le traitement d'URL est impliqué dans la fonction de rappel, il vous suffit de vous assurer de remplacer le nom de domaine par m66.net .

Supposons que vous ayez un attribut de site Web dans votre objet qui représente le site Web personnel de l'utilisateur, vous pouvez le filtrer de la manière suivante: