Lambda function om een array te filteren

Gepubliceerd: 29.06.2021

Introductie

Arrays zijn fundamentele datastructuren in programmeertalen zoals PHP, waarmee we verzamelingen van gerelateerde waarden kunnen opslaan. Vaak moeten we deze arrays manipuleren om specifieke informatie te extraheren. In dit artikel zullen we verkennen hoe we een array van huisdieren kunnen filteren op basis van een bepaalde voorwaarde met behulp van een lambda functie in PHP.

Scenario

We hebben een PHP-array object genaamd $huisdieren, met informatie over verschillende huisdieren en hun kleuren:


$huisdieren = [
    'hond' => ['zwart', 'wit', 'goud'],
    'kat' => ['zwart', 'wit'],
    'vis' => ['zwart', 'wit', 'goud']
];

Doel

Ons doel is om deze array te filteren om alleen de namen van huisdieren te verkrijgen die niet de kleur 'goud' hebben. Dus, de gewenste uitvoer zou moeten zijn:


$gefilterdeHuisdieren = ['hond', 'vis'];

Oplossing

Om dit te bereiken, kunnen we een combinatie van array-manipulatiefuncties gebruiken samen met een lambda functie. Laten we de PHP-code stap voor stap uitleggen:


$nietGoudenHuisdieren = array_filter(array_map(function($key, $value){
    return in_array('goud', $value)? $key : null;
}, array_keys($huisdieren), $huisdieren));

Uitleg

  1. array_keys($huisdieren): Deze functie extrahreert de sleutels (huisdiernamen) uit de $huisdieren array, en retourneert een array met 'hond', 'kat' en 'vis'.
  2. array_map(): Hier passen we een functie toe op elk element van de array die is verkregen uit array_keys($huisdieren). De toegepaste functie neemt twee argumenten: $key (huisdiernaam) en $value (array van kleuren die overeenkomen met het huisdier). Binnen de lambda functie controleren we of 'goud' aanwezig is in de array van kleuren. Als dat zo is, retourneren we $key, anders retourneren we null.
  3. array_filter(): Uiteindelijk gebruiken we array_filter() om null waarden uit de array die is geretourneerd door array_map() te verwijderen, zodat we alleen de huisdiernamen overhouden die niet de kleur 'goud' hebben.

Door deze functies te combineren, filteren we efficiënt de $huisdieren array om het gewenste resultaat te verkrijgen.

Conclusie

Het gebruik van lambda functies in deze context biedt een beknopte en elegante oplossing voor array-manipulatietaken in PHP. Het stelt ons in staat om aangepaste logica inline te definiëren, waardoor onze code leesbaarder en onderhoudbaarder wordt.

Ter conclusie, lambda functies, samen met array-manipulatiefuncties, bieden krachtige tools voor het omgaan met arrays in PHP, waardoor ontwikkelaars complexe bewerkingen gemakkelijk en efficiënt kunnen uitvoeren.