# array_filter

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

array_filter — Filtra elementos de un array usando una función de devolución de llamada

### Descripción

array_filter(array `$array`, callable `$callback` = ?, int `$flag` = 0): array

Recorre cada valor de `array`, pasándolos a la función `callback`. Si la función `callback` devuelve `true` el valor actual desde `array` es devuelto al array resultante. Las claves del array se conservan.

### Parámetros

`array`

  El array a recorrer.

`callback`

  La función de devolución de llamada a usar.

  Si no se proporciona `callback`, todas las entradas de `array` iguales a `false` (véase convetir a boolean) serán eliminadas.

`flag`

  Indicador que determina qué argumentos se envían a `callback`:

  - `ARRAY_FILTER_USE_KEY` - pasar la clave como el único argumento a `callback` en lugar del valor
  - `ARRAY_FILTER_USE_BOTH` - pasar el valor y la clave como argumentos a `callback` en lugar del valor
  Por omisión es `0` que pasará el valor como el único argumento a `callback` en su lugar.

### Valores devueltos

Devuelve el array filtrado.

### Historial de cambios

Versión | Descripción
--- | ---
5.6.0 | Se añadió el parámetro opcional `flag` y las constantes `ARRAY_FILTER_USE_KEY` y `ARRAY_FILTER_USE_BOTH`

### Ejemplos

Ejemplo #1 Ejemplo de array_filter()

`<?php
function impar($var)
{
// Retorna siempre que el número entero sea impar
return $var & 1;
}
function par($var)
{
// Retorna siempre que el número entero sea par
return !($var & 1);
}
$array1 = ['a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5];
$array2 = [6, 7, 8, 9, 10, 11, 12];
echo "Impar :\n";
print_r(array_filter($array1, "impar"));
echo "Par:\n";
print_r(array_filter($array2, "par"));
?>`

El resultado del ejemplo sería:

    Impar :
    Array
    (
        [a] => 1
        [c] => 3
        [e] => 5
    )
    Par:
    Array
    (
        [0] => 6
        [2] => 8
        [4] => 10
        [6] => 12
    )

Ejemplo #2 array_filter() sin `callback`

`<?php
$entrada = [
0 => 'foo',
1 => false,
2 => -1,
3 => null,
4 => '',
5 => '0',
6 => 0,
];
print_r(array_filter($entrada));
?>`

El resultado del ejemplo sería:

    Array
    (
        [0] => foo
        [2] => -1
    )

Ejemplo #3 array_filter() con `flag`

`<?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));
?>`

El resultado del ejemplo sería:

    array(1) {
      ["b"]=>
      int(2)
    }
    array(2) {
      ["b"]=>
      int(2)
      ["d"]=>
      int(4)
    }

### Notas

Precaución

Si el array se cambia desde la función de devolución de llamada (p.ej. un elemento añadido, suprimido o desestablecido) el comportamiento de esta función no estará definido.

### Ver también

- array_map() - Aplica la retrollamada a los elementos de los arrays dados
- array_reduce() - Reduce iterativamente un array a un solo valor usando una función llamada de retorno
- array_walk() - Aplicar una función proporcionada por el usuario a cada miembro de un array