# array_filter

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

array_filter — Filtert Elemente eines Arrays mittels einer Callback-Funktion

### Beschreibung

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

Iteriert über jeden Wert im Array `array` und übergibt diesen der Callbackfunktion `callback`. Gibt die Funktion `callback` `true` zurück, so wird der aktuelle Wert von `array` in das Ergebnis-Array geschrieben.

Die Schlüssel bleiben erhalten, was zu Lücken führen kann, wenn `array` indexiert war. Das resultierende Array kann unter Verwendung der Funktion array_values() reindexiert werden.

### Parameter-Liste

`array`

  Das Array, über das iteriert werden soll

`callback`

  Die zu verwendende Callbackfunktion

  Falls die Funktion `callback` nicht angegeben wurde, werden alle leeren Einträge aus `array` entfernt. Siehe empty() zu Informationen was leer in diesem Fall bedeutet.

`mode`

  Flag, welches bestimmt welche Parameter an `callback` gesendet werden:

  - `ARRAY_FILTER_USE_KEY` - statt des Wertes wird der Schlüssel als einziger Parameter an `callback` gesendet.
  - `ARRAY_FILTER_USE_BOTH` - statt nur des Wertes werden sowohl der Schlüssel als auch der Wert als Parameter an `callback` übergeben.
  Der Standardwert ist `0`, was bedeutet, dass nur der Wert als Parameter an `callback` übergeben wird.

### Rückgabewerte

Gibt das gefilterte Array zurück.

### Changelog

Version | Beschreibung
--- | ---
8.0.0 | `callback` ist jetzt nullbar.
8.0.0 | Wenn `callback` einen per Referenz übergebenen Parameter erwartet, gibt diese Funktion nun einen Fehler der Stufe `E_WARNING` aus.

### Beispiele

Beispiel #1 array_filter()-Beispiel

`<?php
function ungerade($var)
{
// Gibt zurück, ob der Eingabewert ungerade ist
return $var & 1;
}
function gerade($var)
{
// Gibt zurück, ob der Eingabewert gerade ist
return !($var & 1);
}
$array1 = ["a"=>1, "b"=>2, "c"=>3, "d"=>4, "e"=>5];
$array2 = [6, 7, 8, 9, 10, 11, 12];
echo "Ungerade :\n";
print_r(array_filter($array1, "ungerade"));
echo "Gerade:\n";
print_r(array_filter($array2, "gerade"));
?>`

Das oben gezeigte Beispiel erzeugt folgende Ausgabe:

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

Beispiel #2 array_filter() ohne `callback`

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

Das oben gezeigte Beispiel erzeugt folgende Ausgabe:

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

Beispiel #3 array_filter() mit `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));
?>`

Das oben gezeigte Beispiel erzeugt folgende Ausgabe:

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

### Anmerkungen

Achtung

Wird das Array durch die Callbackfunktion verändert (z. B. durch Hinzufügen oder Zurücksetzen eines Elements), so ist das Verhalten dieser Funktion undefiniert.

### Siehe auch

- array_intersect() - Ermittelt die Schnittmenge von Arrays
- array_find() - Returns the first element satisfying a callback function
- array_any() - Checks if at least one Array element satisfies a callback function
- array_map() - Wendet eine Callback-Funktion auf die Elemente von Arrays an
- array_reduce() - Reduziert das Array mittels einer Callback-Funktion iterativ auf einen einzigen Wert

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open