Bird
Raised Fist0
PHPprogramming~20 mins

Generator function execution model in PHP - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Generator Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
Output of a simple generator with yield
What is the output of this PHP code when executed?
PHP
<?php
function gen() {
    yield 1;
    yield 2;
    yield 3;
}
foreach (gen() as $value) {
    echo $value . ' ';
}
?>
A1 2 3
B123
CArray
DError: Cannot use foreach on generator
Attempts:
2 left
💡 Hint
Remember that yield produces values one by one and foreach iterates over them.
❓ Predict Output
intermediate
2:00remaining
Generator state after partial iteration
What will be the output of this PHP code?
PHP
<?php
function gen() {
    yield 'a';
    yield 'b';
    yield 'c';
}
$g = gen();
echo $g->current();
$g->next();
echo $g->current();
?>
AError: Cannot call current() before next()
Bbc
Cab
Da
Attempts:
2 left
💡 Hint
The generator starts at the first yield value before calling next().
🔧 Debug
advanced
2:00remaining
Identify the error in generator usage
What error does this PHP code produce when run?
PHP
<?php
function gen() {
    yield 1;
    yield 2;
}
$g = gen();
$g->next();
$g->next();
$g->next();
echo $g->current();
?>
AFatal error: Call to undefined method
BNULL
CNotice: Undefined offset
DError: Cannot advance generator beyond end
Attempts:
2 left
💡 Hint
What happens when you call next() past the last yield?
🧠 Conceptual
advanced
2:00remaining
Behavior of yield in generator with return
What is the output of this PHP code?
PHP
<?php
function gen() {
    yield 10;
    return 20;
}
$g = gen();
foreach ($g as $value) {
    echo $value . ' ';
}
echo $g->getReturn();
?>
AError: getReturn() not supported
B10
C20
D10 20
Attempts:
2 left
💡 Hint
The return value of a generator can be retrieved after iteration.
❓ Predict Output
expert
2:00remaining
Generator with keys and values
What is the output of this PHP code?
PHP
<?php
function gen() {
    yield 'x' => 100;
    yield 'y' => 200;
}
foreach (gen() as $key => $value) {
    echo "$key:$value ";
}
?>
Ax:100 y:200
B100:x 200:y
C0:100 1:200
DError: Invalid key syntax
Attempts:
2 left
💡 Hint
Yield can specify keys for the generated values.

Practice

(1/5)
1. What does the yield keyword do inside a PHP generator function?
easy
A. It pauses the function and returns a value to the caller.
B. It immediately ends the function and returns a value.
C. It creates a new variable inside the function.
D. It calls another function asynchronously.

Solution

  1. Step 1: Understand the role of yield in generators

    The yield keyword pauses the function execution and sends a value back to the caller without ending the function.
  2. Step 2: Compare with other options

    Unlike return, yield does not end the function but allows it to resume later.
  3. Final Answer:

    It pauses the function and returns a value to the caller. -> Option A
  4. Quick Check:

    yield pauses and returns value [OK]
Hint: Remember: yield pauses, return ends function [OK]
Common Mistakes:
  • Confusing yield with return
  • Thinking yield creates variables
  • Assuming yield calls other functions
2. Which of the following is the correct syntax to define a generator function in PHP?
easy
A. function gen() { return yield 1; }
B. function gen() { yield 1; }
C. function gen() => yield 1;
D. generator gen() { yield 1; }

Solution

  1. Step 1: Identify correct generator syntax

    In PHP, a generator function is a normal function that uses yield inside its body.
  2. Step 2: Check each option

    function gen() { yield 1; } uses a normal function with yield correctly. function gen() { return yield 1; } misuses return yield. function gen() => yield 1; uses invalid arrow syntax. generator gen() { yield 1; } uses an invalid keyword generator.
  3. Final Answer:

    function gen() { yield 1; } -> Option B
  4. Quick Check:

    Normal function + yield = generator [OK]
Hint: Generator = function with yield inside braces [OK]
Common Mistakes:
  • Using return with yield incorrectly
  • Trying arrow function syntax for generators
  • Using non-existent keywords like 'generator'
3. What will be the output of the following PHP code?
function gen() {
  yield 1;
  yield 2;
  yield 3;
}
foreach (gen() as $value) {
  echo $value . ' ';
}
medium
A. 123
B. Error: Cannot use foreach on generator
C. 1,2,3
D. 1 2 3

Solution

  1. Step 1: Understand generator yields

    The generator yields values 1, then 2, then 3 in sequence.
  2. Step 2: Analyze foreach output

    The foreach loops over each yielded value and echoes it followed by a space, so output is "1 2 3 "
  3. Final Answer:

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

    foreach prints each yield with space [OK]
Hint: foreach prints each yield value in order [OK]
Common Mistakes:
  • Ignoring spaces in echo output
  • Thinking foreach can't iterate generators
  • Confusing output format with commas
4. Identify the error in this PHP generator function:
function gen() {
  yield 1;
  return 2;
  yield 3;
}
foreach (gen() as $v) {
  echo $v;
}
medium
A. Syntax error: return not allowed in generator
B. No error, outputs 123
C. The return ends generator early, so yield 3 is never reached
D. foreach cannot iterate generator with return

Solution

  1. Step 1: Understand return in generators

    Return ends the generator function immediately, so code after return is not executed.
  2. Step 2: Analyze code flow

    After yielding 1, the return 2 ends the generator, so yield 3 is never reached or yielded.
  3. Final Answer:

    The return ends generator early, so yield 3 is never reached -> Option C
  4. Quick Check:

    Return stops generator, later yields skipped [OK]
Hint: Return ends generator; yields after return ignored [OK]
Common Mistakes:
  • Thinking return causes syntax error
  • Expecting all yields to run despite return
  • Assuming foreach can't handle return in generator
5. Given this generator function, what will be the output?
function gen() {
  for ($i = 0; $i < 3; $i++) {
    yield $i => $i * 2;
  }
}
foreach (gen() as $key => $value) {
  echo "$key:$value ";
}
hard
A. 0:0 1:2 2:4
B. 0:0 1:1 2:2
C. 0 2 4
D. Error: Cannot yield key => value in PHP

Solution

  1. Step 1: Understand yield with key => value

    The generator yields keys 0,1,2 with values 0,2,4 respectively (value = key * 2).
  2. Step 2: Analyze foreach output

    foreach prints each key and value separated by colon and space, so output is "0:0 1:2 2:4 "
  3. Final Answer:

    0:0 1:2 2:4 -> Option A
  4. Quick Check:

    Yield key=>value prints key:value pairs [OK]
Hint: Yield key=>value pairs print as key:value [OK]
Common Mistakes:
  • Confusing value with key
  • Thinking yield key=>value is invalid
  • Ignoring spaces in output
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