array_filter

(PHP 4 >= 4.0.6, PHP 5, PHP 7, PHP 8)

array_filterFiltre les éléments d'un tableau grâce à une fonction de rappel

Description

array_filter(array$array, ?callable$callback = null, int$mode = 0): array

Évalue chaque valeur du tableau array en les passant à la fonction de rappel callback. Si la fonction de rappel callback retourne true, la valeur courante du tableau array est retournée dans le tableau résultant.

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

VersionDescription
8.0.0callback est désormais nullable.
8.0.0 Si callback attend un paramètre à être passé par référence, cette fonction émet désormais une E_WARNING.

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
To Top