array_filter

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

array_filterFiltra gli elementi di un array usando una funzione callback

Descrizione

array_filter(array $array, ?callable $callback = null, int $mode = 0): array

Itera su ogni valore dell'array passandolo alla funzione callback. Se la funzione callback restituisce true, il valore corrente dell'array viene restituito nell'array risultante.

Le chiavi dell'array sono preservate e possono risultare in lacune se l'array era indicizzato. L'array risultante può essere reindicizzato usando la funzione array_values().

Elenco dei parametri

array

L'array su cui iterare

callback

La funzione callback da utilizzare

Se non viene fornito alcun callback, tutti gli elementi vuoti dell'array verranno rimossi. Vedere empty() per come PHP definisce vuoto in questo caso.

mode

Flag che determina quali argomenti vengono inviati al callback:

  • ARRAY_FILTER_USE_KEY - passa la chiave come unico argomento al callback invece del valore
  • ARRAY_FILTER_USE_BOTH - passa sia il valore che la chiave come argomenti al callback invece del solo valore
Il valore predefinito è 0 che passa il valore come unico argomento al callback.

Valori restituiti

Restituisce l'array filtrato.

Log delle modifiche

Versione Descrizione
8.0.0 callback è ora nullable.
8.0.0 If callback expects a parameter to be passed by reference, this function will now emit an E_WARNING.

Esempi

Example #1 Esempio di array_filter()

<?php
function odd($var)
{
// restituisce se l'intero di input è dispari
return $var & 1;
}

function
even($var)
{
// restituisce se l'intero di input è pari
return !($var & 1);
}

$array1 = ['a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5];
$array2 = [6, 7, 8, 9, 10, 11, 12];

echo
"Dispari :\n";
print_r(array_filter($array1, "odd"));
echo
"Pari:\n";
print_r(array_filter($array2, "even"));
?>

Il precedente esempio visualizzerà:

Odd :
Array
(
    [a] => 1
    [c] => 3
    [e] => 5
)
Even:
Array
(
    [0] => 6
    [2] => 8
    [4] => 10
    [6] => 12
)

Example #2 array_filter() senza callback

<?php

$entry
= [
0 => 'foo',
1 => false,
2 => -1,
3 => null,
4 => '',
5 => '0',
6 => 0,
];

print_r(array_filter($entry));
?>

Il precedente esempio visualizzerà:

Array
(
    [0] => foo
    [2] => -1
)

Example #3 array_filter() con mode

<?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));
?>

Il precedente esempio visualizzerà:

array(1) {
  ["b"]=>
  int(2)
}
array(2) {
  ["b"]=>
  int(2)
  ["d"]=>
  int(4)
}

Note

Attenzione

Se l'array viene modificato dalla funzione callback (ad esempio aggiungendo o rimuovendo un elemento) il comportamento di questa funzione non è definito.

Vedere anche:

  • array_intersect() - Calcola l'intersezione degli arrays
  • array_find() - Returns the first element satisfying a callback function
  • array_any() - Checks if at least one array element satisfies a callback function
  • array_map() - Applica la funzione callback a tutti gli elementi degli array dati
  • array_reduce() - Riduce iterativamente l'array a un singolo valore utilizzando una funzione callback