Multidimensional arrays in PHP - Time & Space Complexity
When working with multidimensional arrays, it is important to understand how the time to process them grows as the array size increases.
We want to know how the number of steps changes when we access or loop through all elements in these arrays.
Analyze the time complexity of the following code snippet.
$matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
];
foreach ($matrix as $row) {
foreach ($row as $value) {
echo $value . " ";
}
}
This code loops through a 2D array (a matrix) and prints each value.
- Primary operation: Nested loops over rows and columns of the array.
- How many times: Outer loop runs once per row, inner loop runs once per element in each row.
As the number of rows and columns grows, the total steps grow by multiplying these sizes.
| Input Size (rows x columns) | Approx. Operations |
|---|---|
| 10 x 10 | 100 |
| 100 x 100 | 10,000 |
| 1000 x 1000 | 1,000,000 |
Pattern observation: The total operations grow by the product of rows and columns, so doubling both makes the work much larger.
Time Complexity: O(n * m)
This means the time grows proportionally to the number of rows times the number of columns in the array.
[X] Wrong: "The time complexity is just O(n) because there is only one loop inside the other."
[OK] Correct: Each element in every row is visited, so the total steps multiply, not add. The nested loops multiply the work.
Understanding how nested loops affect time helps you explain and optimize code that works with tables, grids, or matrices in real projects.
"What if the inner arrays had different lengths? How would the time complexity change?"
Practice
Solution
Step 1: Understand array nesting
A multidimensional array is an array that contains other arrays as its elements.Step 2: Identify the correct definition
An array containing one or more arrays inside it correctly describes this nesting, while others describe unrelated properties.Final Answer:
An array containing one or more arrays inside it -> Option AQuick Check:
Multidimensional array = nested arrays [OK]
- Confusing multidimensional arrays with simple arrays
- Thinking keys must be strings only
- Believing arrays cannot be changed
$colors = [['red', 'green'], ['blue', 'yellow']];
Solution
Step 1: Identify the position of 'blue'
'blue' is in the second inner array (index 1) and is the first element (index 0) there.Step 2: Use correct indices to access
Accessing $colors[1][0] retrieves 'blue'. Other options point to wrong indices or elements.Final Answer:
$colors[1][0] -> Option AQuick Check:
Second array, first element = 'blue' [OK]
- Using wrong index numbers
- Confusing first and second arrays
- Trying to access non-existing elements
$matrix = [[1, 2], [3, 4]];
echo $matrix[0][1] + $matrix[1][0];
Solution
Step 1: Identify the values at given indices
$matrix[0][1] is 2 and $matrix[1][0] is 3.Step 2: Calculate the sum
2 + 3 equals 5, so the output is 5.Final Answer:
5 -> Option CQuick Check:
2 + 3 = 5 [OK]
- Mixing up indices
- Adding wrong elements
- Expecting string output
$arr = [[1, 2], [3, 4];
echo $arr[1][1];
Solution
Step 1: Check array syntax
The array starts with [[ but only one closing bracket ] is present before the semicolon.Step 2: Identify missing bracket
The outer array requires a closing bracket ], so the code should end with ]];Final Answer:
Missing closing bracket for the outer array -> Option BQuick Check:
Outer array brackets must match [OK]
- Confusing inner and outer brackets
- Ignoring syntax errors
- Assuming semicolon fixes bracket issues
<pre>$students = [
['name' => 'Alice', 'scores' => [85, 90]],
['name' => 'Bob', 'scores' => [78, 82]],
['name' => 'Charlie', 'scores' => [92, 88]]
];
Which code correctly calculates and prints the average score of Bob?
Solution
Step 1: Locate Bob's data in the array
Bob is at index 1, and his scores are under the key 'scores'.Step 2: Calculate average correctly
Use array_sum and count on $students[1]['scores'] to get average. $avg = array_sum($students[1]['scores']) / count($students[1]['scores']);
echo $avg; does this correctly.Final Answer:
$avg = array_sum($students[1]['scores']) / count($students[1]['scores']); echo $avg; -> Option DQuick Check:
Index 1 and 'scores' key used correctly [OK]
- Using string key for outer array
- Misspelling 'scores' key
- Using wrong index for Bob
Ready to prove it?
Pass the test and this pattern moves unknown
