(PHP 4 >= 4.0.6, PHP 5, PHP 7)
array_filter — Filtrează elementele unui tablou utilizând o funcție de apel invers
Iterează prin fiecare valoare în tabloul array
transmițând-o funcției callback
. Dacă funcția
callback
întoarce true
, valoarea curentă din
array
este întoarsă în array rezultant.
Cheile tabloului sunt păstrate și pot apărea lacune dacă
array
a fost indexat. Rezultatul array poate fi
reindexat utilizând funcția array_values().
array
Tabloul în care se iterează
callback
Funcția de apel invers utilizată
Dacă nu este furnizată nici o funcție callback
,
toate înregistrările vide din array
vor fi eliminate.
A se vedea funcția empty() pentru a afla modul cum PHP
definește conținutul vid în acest caz.
flag
Fanionul ce determină ce argumente sunt transmise către callback
:
ARRAY_FILTER_USE_KEY
- transmite cheia ca
unic argument pentru callback
în loc de valoare
ARRAY_FILTER_USE_BOTH
- transmite ambele -
valoarea și cheia - ca argumente pentru callback
,
și nu doar valoarea
0
ceea ce va face ca valoarea
să fie transmisă ca unic argument către callback
.
Întoarce tabloul filtrat.
Versiune | Descriere |
---|---|
5.6.0 |
A fost adăugat parametrul opțional flag și constantele
ARRAY_FILTER_USE_KEY și
ARRAY_FILTER_USE_BOTH
|
Example #1 Exemplu array_filter()
<?php
function odd($var)
{
// întoarce true dacă numărul întreg transmis este impar
return $var & 1;
}
function even($var)
{
// întoarce true dacă numărul întreg transmis este par
return !($var & 1);
}
$array1 = ['a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5];
$array2 = [6, 7, 8, 9, 10, 11, 12];
echo "Odd :\n";
print_r(array_filter($array1, "odd"));
echo "Even:\n";
print_r(array_filter($array2, "even"));
?>
Exemplul de mai sus va afișa:
Odd : Array ( [a] => 1 [c] => 3 [e] => 5 ) Even: Array ( [0] => 6 [2] => 8 [4] => 10 [6] => 12 )
Example #2 array_filter() fără
callback
<?php
$entry = [
0 => 'foo',
1 => false,
2 => -1,
3 => null,
4 => '',
5 => '0',
6 => 0,
];
print_r(array_filter($entry));
?>
Exemplul de mai sus va afișa:
Array ( [0] => foo [2] => -1 )
Example #3 array_filter() cu
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));
?>
Exemplul de mai sus va afișa:
array(1) { ["b"]=> int(2) } array(2) { ["b"]=> int(2) ["d"]=> int(4) }
Dacă tabloul este modificat în funcția de apel invers (de ex. un element este adăugat, eliminat sau desetat) comportamentul acestei funcții este nedefinit.