Learn
← Previous Next →

Hari 24: SPL & Iterator

55 min Last updated 09 Apr 2026

SplStack & SplQueue

// Stack (LIFO)
$stack = new SplStack();
$stack->push("A");
$stack->push("B");
$stack->push("C");

echo $stack->pop();  // C (terakhir masuk, pertama keluar)
echo $stack->top();  // B

// Queue (FIFO)
$queue = new SplQueue();
$queue->enqueue("Task 1");
$queue->enqueue("Task 2");
$queue->enqueue("Task 3");

echo $queue->dequeue(); // Task 1 (pertama masuk, pertama keluar)

SplMinHeap & SplMaxHeap

$heap = new SplMinHeap();
foreach ([5, 2, 8, 1, 9, 3] as $n) $heap->insert($n);

while (!$heap->isEmpty()) {
    echo $heap->extract() . " "; // 1 2 3 5 8 9
}

Generator — Lazy Iteration

function fibonacci(): Generator {
    [$a, $b] = [0, 1];
    while (true) {
        yield $a;
        [$a, $b] = [$b, $a + $b];
    }
}

$fib = fibonacci();
for ($i = 0; $i < 8; $i++) {
    echo $fib->current() . " ";
    $fib->next();
}
// 0 1 1 2 3 5 8 13

💡 Notice: "yield" membuat fungsi menjadi Generator yang lazy — nilai dihitung satu per satu saat dibutuhkan.

Assignment

Gunakan Generator untuk menghasilkan bilangan prima sampai batas n. Buat fungsi bilangan_prima(int $batas): Generator. Tampilkan semua prima sampai 30.

Expected output:

2 3 5 7 11 13 17 19 23 29
PHP index.php
Solution
Output