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:

  1. Przygotowanie danych: Załóżmy, że mamy dużą tablicę asocjacyjną reprezentującą konfigurację:
  2. 
    $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 ...
    ];
    				
  3. Funkcja generatora: Stwórzmy funkcję, która będzie generować tylko te elementy tablicy, które pasują do szukanego klucza (częściowo):
  4. 
    function findUsers(array $config, string $search): Generator
    {
        foreach ($config as $key => $value) {
            if (strpos($key, $search) !== false) {
                yield $key => $value;
            }
        }
    }
    				
  5. Wyszukiwanie: Użyjmy generatora do znalezienia użytkowników, których identyfikator zawiera “user_1”:
  6. 
    $searchResults = findUsers($config, 'user_1');
    
    foreach ($searchResults as $key => $value) {
        echo "Znaleziono użytkownika: " . $value['name'] . " (" . $key . ")" . PHP_EOL;
    }
    				
  7. Wynik: Generator zwróci tylko te elementy, które spełniają warunek, co znacznie przyspiesza wyszukiwanie w dużych zbiorach danych.

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.

Dodaj komentarz 0

Your email address will not be published. Required fields are marked *