Bird
Raised Fist0
PHPprogramming~10 mins

Generator return values in PHP - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to yield values from the generator.

PHP
<?php
function gen() {
    yield 1;
    yield [1];
}

foreach (gen() as $value) {
    echo $value . " ";
}
?>
Drag options to blanks, or click blank then click option'
A2
B3
C4
D5
Attempts:
3 left
💡 Hint
Common Mistakes
Using a value that is not a number.
Forgetting to yield the second value.
2fill in blank
medium

Complete the code to get the return value from the generator.

PHP
<?php
function gen() {
    yield 1;
    return [1];
}

$generator = gen();
foreach ($generator as $value) {
    echo $value . " ";
}
$returnValue = $generator->getReturn();
echo "Return: " . $returnValue;
?>
Drag options to blanks, or click blank then click option'
A10
B30
C20
D40
Attempts:
3 left
💡 Hint
Common Mistakes
Trying to get the return value before the generator finishes.
Using getReturn() without iterating the generator first.
3fill in blank
hard

Fix the error in the code to correctly get the generator's return value.

PHP
<?php
function gen() {
    yield 1;
    return [1];
}

$generator = gen();
foreach ($generator as $value) {}
$returnValue = $generator->getReturn();
echo "Return: " . $returnValue;
?>
Drag options to blanks, or click blank then click option'
A100
B200
C300
D400
Attempts:
3 left
💡 Hint
Common Mistakes
Calling getReturn() before iterating the generator.
Not yielding any value before returning.
4fill in blank
hard

Fill both blanks to yield values and return a final value from the generator.

PHP
<?php
function gen() {
    yield [1];
    yield [2];
    return 50;
}

foreach (gen() as $value) {
    echo $value . " ";
}
?>
Drag options to blanks, or click blank then click option'
A10
B20
C30
D40
Attempts:
3 left
💡 Hint
Common Mistakes
Using the same value for both yields.
Not returning the final value.
5fill in blank
hard

Fill all three blanks to yield values and return a final value, then get the return value.

PHP
<?php
function gen() {
    yield [1];
    yield [2];
    return [3];
}

$generator = gen();
foreach ($generator as $value) {
    echo $value . " ";
}
echo "Return: " . $generator->getReturn();
?>
Drag options to blanks, or click blank then click option'
A5
B15
C25
D35
Attempts:
3 left
💡 Hint
Common Mistakes
Not calling getReturn() after iteration.
Mixing up yield and return values.

Practice

(1/5)
1. What does the return statement inside a PHP generator function do?
easy
A. It resets the generator to the beginning.
B. It immediately stops the generator and throws an error.
C. It sets the final value accessible via getReturn() after iteration.
D. It yields a value to the caller like yield does.

Solution

  1. Step 1: Understand generator return behavior

    In PHP, return inside a generator does not yield a value but sets a final return value.
  2. Step 2: Accessing the return value

    This final value can be accessed after iteration using the getReturn() method on the generator object.
  3. Final Answer:

    It sets the final value accessible via getReturn() after iteration. -> Option C
  4. Quick Check:

    Generator return sets final value = D [OK]
Hint: Remember: return in generators sets final value, not yields [OK]
Common Mistakes:
  • Thinking return yields a value
  • Assuming return throws an error
  • Confusing return with yield
2. Which of the following is the correct syntax to get the return value of a generator after iteration?
easy
A. $gen->getReturn();
B. $gen->return();
C. $gen->yieldReturn();
D. $gen->finalValue();

Solution

  1. Step 1: Identify the method to get generator return

    PHP provides getReturn() method on generator objects to retrieve the final return value after iteration.
  2. Step 2: Check other options

    Other methods like return(), yieldReturn(), or finalValue() do not exist in PHP generators.
  3. Final Answer:

    $gen->getReturn(); -> Option A
  4. Quick Check:

    Use getReturn() to get final value [OK]
Hint: Use getReturn() method on generator object [OK]
Common Mistakes:
  • Using non-existent methods like return()
  • Trying to get return value before iteration
  • Confusing yield with return
3. What will be the output of the following PHP code?
$gen = (function() {
    yield 1;
    yield 2;
    return 3;
})();
foreach ($gen as $value) {
    echo $value . ' ';
}
echo $gen->getReturn();
medium
A. 3
B. 1 2 3
C. 1 2
D. 1 2 0

Solution

  1. Step 1: Iterate generator yields

    The generator yields 1 and 2, so the loop prints "1 2 ".
  2. Step 2: Get the return value after iteration

    After the loop, getReturn() returns 3, which is printed immediately after.
  3. Final Answer:

    1 2 3 -> Option B
  4. Quick Check:

    Yields + return value = 1 2 3 [OK]
Hint: Print yields in loop, then append getReturn() value [OK]
Common Mistakes:
  • Expecting return to yield a value
  • Not calling getReturn() after iteration
  • Assuming getReturn() returns 0 by default
4. Identify the error in this PHP generator code:
function gen() {
    yield 1;
    return 2;
    yield 3;
}
$g = gen();
foreach ($g as $v) {
    echo $v . ' ';
}
echo $g->getReturn();
medium
A. The yield 3; after return is unreachable code.
B. You cannot use return inside a generator.
C. The getReturn() method does not exist.
D. The generator must yield at least three values.

Solution

  1. Step 1: Analyze code flow after return

    Once return 2; executes, the function ends, so yield 3; is never reached.
  2. Step 2: Confirm other statements

    Using return in generators is valid, getReturn() exists, and no minimum yield count is required.
  3. Final Answer:

    The yield 3; after return is unreachable code. -> Option A
  4. Quick Check:

    Code after return is unreachable = B [OK]
Hint: Code after return in generator is never executed [OK]
Common Mistakes:
  • Thinking yield after return runs
  • Believing return is not allowed in generators
  • Ignoring unreachable code warnings
5. You want to create a generator that yields numbers 1 to 3 and then returns their sum. Which code correctly achieves this?
hard
A. function gen() { yield 1; yield 2; yield 3; return 7; }
B. function gen() { for ($i = 1; $i <= 3; $i++) { yield $i; } return $i; }
C. function gen() { yield 1; yield 2; yield 3; return 6; yield 7; }
D. function gen() { $sum = 0; for ($i = 1; $i <= 3; $i++) { $sum += $i; yield $i; } return $sum; }

Solution

  1. Step 1: Check yielding numbers 1 to 3

    function gen() { $sum = 0; for ($i = 1; $i <= 3; $i++) { $sum += $i; yield $i; } return $sum; } uses a loop to yield 1, 2, 3 and sums them in $sum.
  2. Step 2: Verify other options

    The second option yields 1-3 but returns $i (4 after loop), not sum 6. The third has unreachable yield 7; after return. The fourth returns 7, wrong sum.
  3. Final Answer:

    The code that accumulates the sum during yielding -> Option D
  4. Quick Check:

    Yield loop + sum return = A [OK]
Hint: Sum while yielding, then return sum after loop ends [OK]
Common Mistakes:
  • Placing code after return (unreachable)
  • Returning wrong sum value
  • Not accumulating sum during yield
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard