# array_filter

(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

É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, ce qui peut entraîner 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

Version | Description
--- | ---
8.0.0 | `callback` 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 ou détruits), le comportement de cette fonction est indéfini.

### Voir aussi

- array_intersect() - Calcule l'intersection de tableaux
- array_find() - Retourne le premier élément validant la fonction de rappel
- array_any() - Vérifie qu'au moins un élément du tableau valide la fonction de rappel
- array_map() - Applique une fonction sur les éléments d'un tableau
- array_reduce() - Réduit itérativement un tableau