Wyszukiwanie wartości w tablicach asocjacyjnych z użyciem generatorów
Założenie: Chcemy efektywnie wyszukać wartość w dużej tablicy asocjacyjnej, unikając iteracji po wszystkich elementach, gdy znana jest tylko część klucza.
Krok po kroku:
- Przygotowanie danych: Załóżmy, że mamy dużą tablicę asocjacyjną reprezentującą konfigurację:
- Funkcja generatora: Stwórzmy funkcję, która będzie generować tylko te elementy tablicy, które pasują do szukanego klucza (częściowo):
- Wyszukiwanie: Użyjmy generatora do znalezienia użytkowników, których identyfikator zawiera “user_1”:
- Wynik: Generator zwróci tylko te elementy, które spełniają warunek, co znacznie przyspiesza wyszukiwanie w dużych zbiorach danych.
$config = [
'user_1' => ['name' => 'Jan Kowalski', 'email' => 'jan.kowalski@example.com'],
'user_2' => ['name' => 'Anna Nowak', 'email' => 'anna.nowak@example.com'],
'user_3' => ['name' => 'Piotr Wiśniewski', 'email' => 'piotr.wisniewski@example.com'],
// ... wiele innych użytkowników ...
];
function findUsers(array $config, string $search): Generator
{
foreach ($config as $key => $value) {
if (strpos($key, $search) !== false) {
yield $key => $value;
}
}
}
$searchResults = findUsers($config, 'user_1');
foreach ($searchResults as $key => $value) {
echo "Znaleziono użytkownika: " . $value['name'] . " (" . $key . ")" . PHP_EOL;
}
Ten przykład pokazuje, jak używać generatorów w PHP do efektywnego wyszukiwania w tablicach asocjacyjnych. Zachęcamy do dalszego zgłębiania tematu generatorów i ich zastosowań w bardziej złożonych scenariuszach.