(PHP 4 >= 4.0.6, PHP 5, PHP 7, PHP 8)
array_filter — Filtra gli elementi di un array usando una funzione callback
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().
arrayL'array su cui iterare
callbackLa 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
0 che passa il valore come unico argomento
al callback.
Restituisce l'array filtrato.
| 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.
|
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)
}
Se l'array viene modificato dalla funzione callback (ad esempio aggiungendo o rimuovendo un elemento) il comportamento di questa funzione non è definito.