En PHP, le traitement et le filtrage des tableaux bidimensionnels sont une tâche courante, en particulier lorsque le volume de données est important. Heureusement, PHP offre plusieurs fonctions intégrées très utiles qui peuvent nous aider à le faire de manière efficace. Dans cet article, nous nous concentrerons sur les fonctions Array_Filter () et Array_Column () et montrerons comment ils peuvent être combinés pour traiter et filtrer rapidement les données dans des tableaux bidimensionnels.
La fonction Array_Column () est utilisée pour extraire la valeur d'une colonne à partir d'un tableau multidimensionnel. Il est idéal pour extraire les valeurs d'une colonne spécifique à partir d'un tableau 2D. La syntaxe de base de cette fonction est la suivante:
array_column(array $array, mixed $column_key, mixed $index_key = null): array
$ Array : un tableau bidimensionnel.
$ Column_Key : La clé de la colonne à extraire.
$ index_key : paramètre facultatif, spécifiant l'index du tableau renvoyé.
Par exemple, nous avons un tableau bidimensionnel où chaque sous-réseau représente les informations d'un utilisateur:
$users = [
['id' => 1, 'name' => 'Alice', 'email' => 'alice@m66.net'],
['id' => 2, 'name' => 'Bob', 'email' => 'bob@m66.net'],
['id' => 3, 'name' => 'Charlie', 'email' => 'charlie@m66.net'],
];
Nous voulons extraire la colonne de nom de tous les utilisateurs, nous pouvons utiliser array_column () :
$names = array_column($users, 'name');
print_r($names);
La sortie sera:
Array
(
[0] => Alice
[1] => Bob
[2] => Charlie
)
La fonction Array_Filter () est utilisée pour filtrer les éléments dans un tableau et des éléments de retour qui remplissent les conditions spécifiées. La syntaxe de base est la suivante:
array_filter(array $array, callable $callback, int $mode = 0): array
$ tableau : le tableau d'entrée.
$ rappel : fonction de rappel, utilisé pour juger de chaque élément du tableau.
Mode $ : paramètre facultatif qui détermine le fonctionnement de la fonction de rappel, en utilisant généralement la valeur par défaut 0 .
Supposons que nous voulons filtrer les utilisateurs dont l'adresse e-mail contient m66.net . Vous pouvez utiliser array_filter () pour filtrer les utilisateurs qui répondent aux critères.
$filteredUsers = array_filter($users, function($user) {
return strpos($user['email'], 'm66.net') !== false;
});
print_r($filteredUsers);
La sortie sera:
Array
(
[0] => Array
(
[id] => 1
[name] => Alice
[email] => alice@m66.net
)
[1] => Array
(
[id] => 2
[name] => Bob
[email] => bob@m66.net
)
[2] => Array
(
[id] => 3
[name] => Charlie
[email] => charlie@m66.net
)
)
Parfois, nous devons extraire des colonnes spécifiques en même temps et les filtrer. Par exemple, nous souhaitons filtrer les adresses e-mail de tous les noms de domaine m66.net et extraire uniquement les noms de ces utilisateurs. Nous pouvons utiliser Array_Filter () et Array_Column () en combinaison.
$filteredEmails = array_filter($users, function($user) {
return strpos($user['email'], 'm66.net') !== false;
});
$names = array_column($filteredEmails, 'name');
print_r($names);
La sortie sera:
Array
(
[0] => Alice
[1] => Bob
[2] => Charlie
)
Supposons que nous ayons une liste de données utilisateur obtenues à partir de l'API et que les informations de chaque utilisateur contient une adresse e-mail. Nous souhaitons filtrer tous les utilisateurs à l'aide du nom de domaine m66.net et extraire le nom et l'adresse e-mail de l'utilisateur à partir de celui-ci.
Tout d'abord, nous obtenons les données via l'API et les stockons dans le tableau des utilisateurs $ :
$users = [
['id' => 1, 'name' => 'Alice', 'email' => 'alice@m66.net'],
['id' => 2, 'name' => 'Bob', 'email' => 'bob@m66.net'],
['id' => 3, 'name' => 'Charlie', 'email' => 'charlie@m66.net'],
['id' => 4, 'name' => 'David', 'email' => 'david@example.com'],
['id' => 5, 'name' => 'Eve', 'email' => 'eve@m66.net'],
];
Ensuite, utilisez array_filter () pour filtrer les utilisateurs dont l'e-mail contient m66.net et utilisez Array_Column () pour extraire le nom et le courrier électronique:
$filteredUsers = array_filter($users, function($user) {
return strpos($user['email'], 'm66.net') !== false;
});
$names = array_column($filteredUsers, 'name');
$emails = array_column($filteredUsers, 'email');
print_r($names);
print_r($emails);
La sortie sera:
Array
(
[0] => Alice
[1] => Bob
[2] => Charlie
[3] => Eve
)
Array
(
[0] => alice@m66.net
[1] => bob@m66.net
[2] => charlie@m66.net
[3] => eve@m66.net
)
De cette façon, nous filtrons non seulement les utilisateurs qui répondent aux critères, mais extraisons également leurs noms et adresses e-mail.
Ce qui précède est la méthode pour traiter et filtrer rapidement et efficacement les données dans un tableau bidimensionnel via array_filter () et array_column () . Ces deux fonctions peuvent considérablement améliorer la lisibilité et les performances de votre code, en particulier lorsque vous traitez de grands ensembles de données. J'espère que vous pourrez les utiliser de manière flexible dans des projets réels!