Wyszukiwanie wartości w tablicach asocjacyjnych z użyciem generatorów (wyszukiwanie leniwe)

Założenie: Chcemy efektywnie wyszukać wartość w bardzo dużej tablicy asocjacyjnej, unikając jednoczesnego przetwarzania wszystkich danych.

Krok po kroku:

  1. Stworzenie dużej tablicy asocjacyjnej: Zdefiniujmy przykładową tablicę reprezentującą konfigurację systemu.
  2. 
    $config = [
        'user1' => ['name' => 'Jan Kowalski', 'role' => 'admin'],
        'user2' => ['name' => 'Anna Nowak', 'role' => 'user'],
        'user3' => ['name' => 'Piotr Wiśniewski', 'role' => 'admin'],
        // ... wiele innych użytkowników ...
        'user1000' => ['name' => 'Zofia Zielińska', 'role' => 'user']
    ];
    				
  3. Funkcja generatora do wyszukiwania: Napiszmy funkcję, która będzie generować wyniki tylko wtedy, gdy znajdzie pasujące elementy.
  4. 
    function findUsersByRole(array $config, string $role): Generator
    {
        foreach ($config as $userId => $userData) {
            if ($userData['role'] === $role) {
                yield $userId => $userData;
            }
        }
    }
    				
  5. Użycie generatora: Wykorzystajmy generator do wyszukiwania użytkowników o roli “admin”.
  6. 
    foreach (findUsersByRole($config, 'admin') as $userId => $userData) {
        echo "Użytkownik ID: " . $userId . ", Imię: " . $userData['name'] . "\n";
    }
    				
  7. Wyjaśnienie: Generator `findUsersByRole` zwraca tylko te elementy, które spełniają warunek. Nie przetwarza całej tablicy naraz, co jest bardzo efektywne dla dużych zbiorów danych.

Ten przykład pokazuje podstawy wykorzystania generatorów w PHP do efektywnego wyszukiwania w dużych tablicach asocjacyjnych. Zachęcamy do dalszego zgłębiania tematu generatorów i ich zastosowań w praktyce!

Dodaj komentarz 0

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