Usare array_filter in PHP con parametri

Mattepuffo's logo
Usare array_filter in PHP con parametri

Usare array_filter in PHP con parametri

La funzione array_filter di PHP è molto comoda quando si vuole cercare / filtrare dati in un array senza dover riscrivere tutta la logica.

Solo che non è proprio facile da capire, soprattutto quando abbiamo bisogno di più flessibilità rispetto agli esempi standard.

Ad esempio, io avevo bisogno di passare un parametro aggiuntivo alla funzione di callback.

Ho trovato due soluzioni, in base alla versione di PHP.

Se avete dall 5.3 o superiore:

$json = json_decode(file_get_contents('.........'));
$ag = 106614;

$filter = array_filter($json, function($obj) use ($ag) {
    $conto = intval(substr($obj->conto, 4, 6));
    if ($conto == $ag) {
        return $conto;
    }
});

var_dump($filter);  

In pratica usiamo le funzioni anonime.

Se invece abbiamo una versione più vecchia, dobbiamo usare le variabili globali:

$json = json_decode(file_get_contents('.........'));
$ag = 106614;

$filter = array_filter($json, function($obj) {
    global $ag;
    $conto = intval(substr($obj->conto, 4, 6));
    if ($conto == $ag) {
        return $conto;
    }
});

var_dump($filter);  

Inutile dire che io preferisco la prima versione.

Enjoy!


Condividi

Commentami!