While loop execution model in PHP - Time & Space Complexity
We want to understand how the time a while loop takes changes as the input grows.
How many times does the loop run when the input gets bigger?
Analyze the time complexity of the following code snippet.
$count = 0;
while ($count < $n) {
echo $count . "\n";
$count++;
}
This code prints numbers from 0 up to one less than n using a while loop.
Identify the loops, recursion, array traversals that repeat.
- Primary operation: The while loop runs repeatedly.
- How many times: It runs once for each number from 0 to n-1, so n times.
As n grows, the loop runs more times, directly matching n.
| Input Size (n) | Approx. Operations |
|---|---|
| 10 | About 10 times |
| 100 | About 100 times |
| 1000 | About 1000 times |
Pattern observation: The number of operations grows evenly as n grows.
Time Complexity: O(n)
This means the time it takes grows in a straight line with the size of n.
[X] Wrong: "The while loop runs only once no matter the input size."
[OK] Correct: The loop runs as many times as the condition allows, so it depends on n, not just once.
Understanding how loops grow with input size helps you explain your code clearly and shows you know how programs behave as data grows.
"What if we changed the loop to increase count by 2 each time? How would the time complexity change?"
Practice
What does a while loop do in PHP?
Solution
Step 1: Understand the while loop purpose
A while loop repeats its code block while the condition remains true.Step 2: Compare options with definition
Only Repeats code as long as a condition is true matches this behavior exactly.Final Answer:
Repeats code as long as a condition is true -> Option BQuick Check:
while loop = repeat while true [OK]
- Thinking while loops run a fixed number of times
- Confusing while with if statement
- Assuming while loops always run at least once
Which of the following is the correct syntax for a while loop in PHP?
?Solution
Step 1: Check correct while loop syntax
In PHP, the condition must be in parentheses and the block in braces.Step 2: Identify syntax errors in options
while ($i < 5) { echo $i; $i++; } uses correct parentheses and braces. Others miss braces, have semicolon errors, or missing parentheses.Final Answer:
while ($i < 5) { echo $i; $i++; } -> Option CQuick Check:
while (condition) { code } [OK]
- Omitting parentheses around condition
- Adding semicolon after while condition
- Not using braces for multiple statements
What will be the output of this PHP code?
$i = 1;
while ($i <= 3) {
echo $i . ' ';
$i++;
}Solution
Step 1: Trace the loop iterations
Variable $i starts at 1 and increments by 1 each loop until $i > 3.Step 2: Determine output each iteration
Outputs '1 ', then '2 ', then '3 '. Loop stops after $i becomes 4.Final Answer:
1 2 3 -> Option AQuick Check:
Prints 1 to 3 with spaces [OK]
- Including extra number after loop ends
- Missing spaces in output
- Confusing <= with < in condition
Find the error in this PHP while loop code:
$i = 0;
while ($i < 3)
echo $i;
$i++;
Solution
Step 1: Analyze loop structure without braces
Without braces, only the first statement after while runs in loop.Step 2: Identify effect on $i++
$i++ runs after loop ends, causing infinite loop because $i never increments inside loop.Final Answer:
Missing braces causes $i++ to run outside loop -> Option DQuick Check:
Braces needed to include all statements in loop [OK]
- Assuming indentation controls loop body
- Forgetting to increment loop variable inside loop
- Thinking condition syntax is incorrect
You want to print all even numbers from 2 to 10 using a while loop in PHP. Which code correctly does this?
?Solution
Step 1: Identify correct start and condition
Start at 2 and include 10, so condition is $i <= 10.Step 2: Check increment and output
Increment by 2 to get even numbers only, and echo with space.Step 3: Compare options
$i = 2; while ($i <= 10) { echo $i . ' '; $i += 2; } matches all criteria exactly. $i = 1; while ($i <= 10) { if ($i % 2 == 1) echo $i . ' '; $i++; } prints odd numbers: 1 3 5 7 9. $i = 2; while ($i < 10) { echo $i . ' '; $i += 2; } misses 10. $i = 0; while ($i <= 10) { echo $i . ' '; $i += 2; } starts at 0, which is not requested.Final Answer:
$i = 2; while ($i <= 10) { echo $i . ' '; $i += 2; } -> Option AQuick Check:
Start=2, end=10, step=2 [OK]
- Starting at 0 or 1 instead of 2
- Using < instead of <= to exclude 10
- Not incrementing by 2 to get even numbers
Ready to prove it?
Pass the test and this pattern moves unknown
