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

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 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
Valoarea implicită este 0 ceea ce va face ca valoarea să fie transmisă ca unic argument către callback.

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 = ['a' => 1'b' => 2'c' => 3'd' => 4'e' => 5];
$array2 = [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 
= [
    
=> 'foo',
    
=> false,
    
=> -1,
    
=> null,
    
=> '',
    
=> '0',
    
=> 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)
}

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