array_filter

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

array_filterFiltrează elementele unui tablou utilizând o funcție de apel invers

Descrierea

array_filter ( array $array [, callable $callback [, int $flag = 0 ]] ) : array

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.

Parametri

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

Valorile întoarse

Întoarce tabloul filtrat.

Istoricul schimbărilor

Versiune Descriere
5.6.0 A fost adăugat parametrul opțional flag și constantele ARRAY_FILTER_USE_KEY și ARRAY_FILTER_USE_BOTH

Exemple

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(6789101112);

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(
             
=> 'foo',
             
=> false,
             
=> -1,
             
=> null,
             
=> ''
          
);

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)
}

Note

Precauţie

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.

A se vedea și

  • array_map() - Applies the callback to the elements of the given arrays
  • array_reduce() - Iteratively reduce the array to a single value using a callback function
  • array_walk() - Apply a user supplied function to every member of an array