(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.
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 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.