Wyszukiwanie wartości w tablicy z użyciem generatorów (wyszukiwanie leniwe)
Założenie: Nauczyć się, jak efektywnie wyszukiwać wartości w dużych tablicach w PHP za pomocą generatorów, unikając ładowania całej tablicy do pamięci.
Krok po kroku:
- Stworzenie funkcji generatora: Funkcja ta będzie iterować po tablicy i zwracać wartości pojedynczo, tylko wtedy gdy są potrzebne.
- Utworzenie przykładowej tablicy: Utworzymy dużą tablicę liczb.
- Wyszukiwanie wartości: Użyjemy generatora do znalezienia wartości w tablicy.
function searchArrayGenerator(array $array, $value): Generator {
foreach ($array as $key => $item) {
if ($item === $value) {
yield $key => $item;
break; // Znajdujemy tylko pierwsze wystąpienie
}
}
}
Funkcja searchArrayGenerator
używa słowa kluczowego yield
, co oznacza, że jest to generator. Iteruje po tablicy i zwraca tylko klucz i wartość, gdy znajdzie szukaną wartość. break;
zatrzymuje iterację po znalezieniu pierwszego dopasowania.
$largeArray = range(1, 1000000);
Tworzymy tablicę zawierającą liczby od 1 do 1000000.
$searchValue = 500000;
$result = searchArrayGenerator($largeArray, $searchValue);
foreach ($result as $key => $value) {
echo "Znaleziono wartość $value o kluczu $key\n";
}
Pętla foreach
iteruje po wynikach generatora. Generator zwróci tylko jedno dopasowanie (pierwsze wystąpienie).
Ten przykład pokazuje, jak generator może znacznie poprawić wydajność wyszukiwania w dużych tablicach, ponieważ nie ładuje całej tablicy do pamięci. Zachęcamy do eksperymentowania z różnymi rozmiarami tablic i wartościami, aby zobaczyć różnicę w wydajności.