Bird
Raised Fist0
PHPprogramming~15 mins

Yield keyword behavior in PHP - Mini Project: Build & Apply

Choose your learning style10 modes available
Yield keyword behavior
📖 Scenario: Imagine you have a list of tasks to do, but you want to handle them one by one without loading all at once. Using yield in PHP helps you do this efficiently.
🎯 Goal: You will create a generator function using yield to produce tasks one at a time, then loop through them to display each task.
📋 What You'll Learn
Create an array called $tasks with exact string values: 'Clean', 'Cook', 'Shop'
Create a generator function called taskGenerator that uses yield to return each task from $tasks
Use a foreach loop with variable $task to iterate over taskGenerator()
Print each task inside the loop using echo
💡 Why This Matters
🌍 Real World
Generators are useful when working with large data sets or streams where loading all data at once is not efficient.
💼 Career
Understanding <code>yield</code> helps in writing memory-efficient PHP code, useful in backend development and data processing jobs.
Progress0 / 4 steps
1
Create the tasks array
Create an array called $tasks with these exact string values: 'Clean', 'Cook', 'Shop'.
PHP
Hint

Use square brackets to create the array and separate values with commas.

2
Create the generator function
Create a generator function called taskGenerator that uses yield to return each task from the $tasks array.
PHP
Hint

Use foreach to loop over $tasks and yield each $task.

3
Loop through the generator
Use a foreach loop with variable $task to iterate over taskGenerator().
PHP
Hint

Use foreach with taskGenerator() and variable $task.

4
Print each task
Inside the foreach loop, print each $task using echo followed by a newline.
PHP
Hint

Use echo $task . "\n"; to print each task on its own line.

Practice

(1/5)
1. What does the yield keyword do in a PHP function?
easy
A. It returns a value and pauses the function, resuming later to produce more values.
B. It immediately stops the function and returns a single value.
C. It creates a new variable inside the function.
D. It converts the function into a class method automatically.

Solution

  1. Step 1: Understand yield behavior

    The yield keyword pauses the function and returns a value without ending it.
  2. Step 2: Compare with return

    Unlike return, yield allows the function to resume and produce more values later.
  3. Final Answer:

    It returns a value and pauses the function, resuming later to produce more values. -> Option A
  4. Quick Check:

    Yield pauses and resumes function = A [OK]
Hint: Yield pauses function to produce values one by one [OK]
Common Mistakes:
  • Confusing yield with return which ends function
  • Thinking yield creates variables
  • Assuming yield converts function to class method
2. Which of the following is the correct syntax to yield values from a function in PHP?
easy
A. yield($value);
B. return yield $value;
C. yield => $value;
D. yield $value;

Solution

  1. Step 1: Recall yield syntax

    The correct syntax to yield a value is simply yield $value; inside the function.
  2. Step 2: Check other options

    Options B, C, and D use invalid or incorrect syntax for yield in PHP.
  3. Final Answer:

    yield $value; -> Option D
  4. Quick Check:

    Simple yield syntax is 'yield $value;' [OK]
Hint: Yield uses simple 'yield $value;' syntax [OK]
Common Mistakes:
  • Adding return before yield
  • Using arrow (=>) with yield
  • Calling yield like a function
3. What will be the output of this PHP code?
function gen() {
  yield 1;
  yield 2;
  yield 3;
}
foreach (gen() as $val) {
  echo $val . ' ';
}
medium
A. 1 2 3
B. Array
C. 123
D. Error: yield not allowed here

Solution

  1. Step 1: Understand generator yields

    The function gen() yields values 1, 2, and 3 one by one.
  2. Step 2: foreach prints each yielded value

    The foreach loop prints each value followed by a space, so output is '1 2 3 '.
  3. Final Answer:

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

    Yielded values printed with spaces = B [OK]
Hint: Yield outputs values one by one in foreach loop [OK]
Common Mistakes:
  • Expecting concatenated string without spaces
  • Thinking yield returns an array
  • Assuming syntax error with yield
4. Identify the error in this PHP code using yield:
function numbers() {
  yield 1
  yield 2;
}
foreach(numbers() as $n) {
  echo $n;
}
medium
A. foreach loop syntax is wrong
B. Missing semicolon after first yield statement
C. Cannot use yield inside a function
D. Yield must be followed by parentheses

Solution

  1. Step 1: Check yield statements

    The first yield statement is missing a semicolon at the end, causing a syntax error.
  2. Step 2: Validate other parts

    Using yield inside a function and foreach syntax are correct; yield does not require parentheses.
  3. Final Answer:

    Missing semicolon after first yield statement -> Option B
  4. Quick Check:

    Each yield needs semicolon [OK]
Hint: Check semicolons after yield statements [OK]
Common Mistakes:
  • Forgetting semicolon after yield
  • Thinking yield needs parentheses
  • Assuming foreach syntax error
5. Given this PHP function using yield:
function filterPositive(array $numbers) {
  foreach ($numbers as $num) {
    if ($num > 0) {
      yield $num;
    }
  }
}

$values = [-2, 0, 3, 5, -1];
foreach (filterPositive($values) as $val) {
  echo $val . ',';
}

What is the output?
hard
A. 0,3,5,
B. -2,0,3,5,-1,
C. 3,5,
D. Error: yield cannot be used with if

Solution

  1. Step 1: Analyze filtering condition

    The function yields only numbers greater than 0, so it skips -2, 0, and -1.
  2. Step 2: Identify yielded values

    Only 3 and 5 satisfy the condition and are yielded, printed with commas.
  3. Final Answer:

    3,5, -> Option C
  4. Quick Check:

    Yield filters positive numbers only = D [OK]
Hint: Yield can filter values with if condition [OK]
Common Mistakes:
  • Including zero or negative numbers
  • Thinking yield can't be inside if
  • Expecting all values printed
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