Unlike return, yield can be used anywhere within a function so logic can flow more naturally. Take for example the following Fibonacci generator:
<?php
function fib($n)
{
$cur = 1;
$prev = 0;
for ($i = 0; $i < $n; $i++) {
yield $cur;
$temp = $cur;
$cur = $prev + $cur;
$prev = $temp;
}
}
$fibs = fib(9);
foreach ($fibs as $fib) {
echo " " . $fib;
}
// prints: 1 1 2 3 5 8 13 21 34| CARVIEW |
Select Language
HTTP/2 301
server: myracloud
date: Sun, 28 Dec 2025 23:01:41 GMT
content-type: text/html
content-length: 161
location: https://www.php.net/generator
HTTP/2 200
server: myracloud
date: Sun, 28 Dec 2025 23:01:41 GMT
content-type: text/html; charset=utf-8
content-language: en
permissions-policy: interest-cohort=()
x-frame-options: SAMEORIGIN
status: 200 OK
link: ; rel=shorturl
last-modified: Sun, 28 Dec 2025 22:08:10 GMT
vary: accept-encoding
content-encoding: gzip
expires: Sun, 28 Dec 2025 23:01:41 GMT
cache-control: max-age=0
PHP: Generator - Manual
update page now
The Generator class
(PHP 5 >= 5.5.0, PHP 7, PHP 8)
Introduction
Generator objects are returned from generators.
Caution
Generator objects cannot be instantiated via new.
Class synopsis
See Also
See also object iteration.
Table of Contents
- Generator::current — Get the yielded value
- Generator::getReturn — Get the return value of a generator
- Generator::key — Get the yielded key
- Generator::next — Resume execution of the generator
- Generator::rewind — Rewind the generator to the first yield
- Generator::send — Send a value to the generator
- Generator::throw — Throw an exception into the generator
- Generator::valid — Check if the iterator has been closed
- Generator::__wakeup — Serialize callback
+add a note
User Contributed Notes 1 note
Pistachio ¶
9 years ago
↑ and ↓ to navigate •
Enter to select •
Esc to close • / to open
Press Enter without
selection to search using Google