Что такое генератор как lazy-итератор для больших массивов?

Ответ

Генераторы позволяют обрабатывать данные по одному элементу, не загружая все в память:

// Обычный массив - 1 млн элементов в памяти
function getAll(): array {
    $data = [];
    for ($i = 0; $i < 1_000_000; $i++) {
        $data[] = $i;
    }
    return $data; // ~32 MB
}

// Генератор - 1 элемент в памяти
function getAll(): Generator {
    for ($i = 0; $i < 1_000_000; $i++) {
        yield $i;
    }
}

foreach (getAll() as $item) {
    process($item);
}

Генераторы идеальны для: чтения больших файлов, результатов из БД, потоковой обработки. Потребление памяти не зависит от объема данных.

🧠Квиз 🏆Лидеры 🎯Собесед. 📖Вопросы 📚База зн.