Wyszukiwanie wartości z użyciem technik programowania funkcyjnego (mapowanie, filtrowanie, redukcja)
Założenie: Znajdźmy elementy tablicy spełniające złożony warunek po przetworzeniu danych za pomocą funkcji array_map
, array_filter
i array_reduce
.
Krok po kroku:
- Przygotowanie danych: Definiujemy tablicę z danymi użytkowników.
- Mapowanie danych: Używamy
array_map
, aby dodać nowe pole ‘ageGroup’ na podstawie wieku. - Filtrowanie danych: Używamy
array_filter
, aby wybrać tylko użytkowników z Warszawy i starszych niż 30 lat. - Redukcja danych: Używamy
array_reduce
, aby uzyskać listę imion użytkowników spełniających warunek.
$users = [
['name' => 'Jan', 'age' => 30, 'city' => 'Warszawa'],
['name' => 'Anna', 'age' => 25, 'city' => 'Kraków'],
['name' => 'Piotr', 'age' => 35, 'city' => 'Warszawa'],
['name' => 'Maria', 'age' => 28, 'city' => 'Wrocław']
];
$usersWithAgeGroup = array_map(function ($user) {
$user['ageGroup'] = ($user['age'] < 30) ? 'Młody' : 'Starszy';
return $user;
}, $users);
$filteredUsers = array_filter($usersWithAgeGroup, function ($user) {
return $user['city'] === 'Warszawa' && $user['age'] > 30;
});
$names = array_reduce($filteredUsers, function ($carry, $user) {
$carry[] = $user['name'];
return $carry;
}, []);
print_r($names); // Wyświetli: Array ( [0] => Piotr )
Ten przykład pokazuje, jak wykorzystać funkcje wyższego rzędu w PHP do efektywnego przetwarzania i filtrowania danych przed wyszukiwaniem. Zachęcamy do eksperymentowania z różnymi funkcjami i warunkami!