(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 tabloul rezultant.
Cheile tabloului sunt păstrate.
arrayTabloul în care se iterează
callbackFuncția de apel invers utilizată
Dacă nu este furnizată nici o funcție callback,
toate înregistrările din array egale cu FALSE
(vedeți convertarea în
boolean) vor fi eliminate.
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
Î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 = array("a"=>1, "b"=>2, "c"=>3, "d"=>4, "e"=>5);
$array2 = array(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 = array(
0 => 'foo',
1 => false,
2 => -1,
3 => null,
4 => ''
);
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.