(PHP 4 >= 4.0.6, PHP 5, PHP 7, PHP 8)
array_filter — Filtre les éléments d'un tableau grâce à une fonction de rappel
Description
array_filter(array
$array, ?callable
$callback =
null, int
$mode = 0): array
Les clés du tableau sont préservées, et peut entrainer des anomalies si le
tableau array était indexé. Le tableau résultant
peut être ré-indexé en utilisant la fonction array_values().
Liste de paramètres
-
array
-
Le tableau à parcourir
-
callback
-
La fonction de rappel à utiliser
Si aucune fonction de rappel callback n'est fournie,
toutes les entrées vides du tableau array seront supprimées.
Voir la fonction empty() pour comprendre la façon dont PHP gère
le vide dans ce cas.
-
mode
-
Drapeau indiquant quels sont les arguments à envoyer
à la fonction de rappel callback :
-
ARRAY_FILTER_USE_KEY - passer la clé comme seul
argument à callback au lieu de la valeur.
-
ARRAY_FILTER_USE_BOTH - passer à la fois la
valeur et la clé comme arguments de callback
au lieu de la valeur.
Par défaut 0, qui passera la valeur comme
seul argument de callback.
Valeurs de retour
Retourne le tableau filtré.
Historique
Exemples
Exemple #1 Exemple avec array_filter()
<?php
function odd($var)
{
// retourne si l'entier en entrée est impair
return $var & 1;
}
function even($var)
{
// retourne si l'entier en entrée est pair
return !($var & 1);
}
$array1 = ['a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5];
$array2 = [6, 7, 8, 9, 10, 11, 12];
echo "Impair :\n";
print_r(array_filter($array1, "odd"));
echo "Pair :\n";
print_r(array_filter($array2, "even"));
?>
L'exemple ci-dessus va afficher :
Impair :
Array
(
[a] => 1
[c] => 3
[e] => 5
)
Pair :
Array
(
[0] => 6
[2] => 8
[4] => 10
[6] => 12
)
Exemple #2 Exemple avec array_filter()
callback
<?php
$entry = [
0 => 'foo',
1 => false,
2 => -1,
3 => null,
4 => '',
5 => '0',
6 => 0,
];
print_r(array_filter($entry));
?>
L'exemple ci-dessus va afficher :
Array
(
[0] => foo
[2] => -1
)
Exemple #3 Exemple avec array_filter() et
mode
<?php
$arr = ['a' => 1, 'b' => 2, 'c' => 3, 'd' => 4];
var_dump(array_filter($arr, function($k) {
return $k == 'b';
}, ARRAY_FILTER_USE_KEY));
var_dump(array_filter($arr, function($v, $k) {
return $k == 'b' || $v == 4;
}, ARRAY_FILTER_USE_BOTH));
?>
L'exemple ci-dessus va afficher :
array(1) {
["b"]=>
int(2)
}
array(2) {
["b"]=>
int(2)
["d"]=>
int(4)
}
Notes
Attention
Si le tableau est modifié depuis la fonction de rappel (par exemple
des éléments sont ajoutés, effacés ou détruit), le comportement
de cette fonction est indéfini.
Voir aussi
- array_intersect() - Calcule l'intersection de tableaux
- array_map() - Applique une fonction sur les éléments d'un tableau
- array_reduce() - Réduit itérativement un tableau
- array_walk() - Exécute une fonction fournie par l'utilisateur sur chacun des éléments d'un tableau