Instanceof operator in PHP - Time & Space Complexity
Let's see how the time it takes to check if an object is an instance of a class changes as the program runs.
We want to know how the cost of using the instanceof operator grows with the number of checks.
Analyze the time complexity of the following code snippet.
class Animal {}
class Dog extends Animal {}
$dogs = [];
for ($i = 0; $i < $n; $i++) {
$dogs[] = new Dog();
}
foreach ($dogs as $dog) {
if ($dog instanceof Animal) {
// do something
}
}
This code creates many Dog objects and checks if each one is an instance of Animal.
Identify the loops, recursion, array traversals that repeat.
- Primary operation: The
foreachloop that checksinstanceoffor each object. - How many times: It runs once for every object in the array, so
ntimes.
Each new object adds one more check. So if you double the objects, you double the checks.
| Input Size (n) | Approx. Operations |
|---|---|
| 10 | 10 instanceof checks |
| 100 | 100 instanceof checks |
| 1000 | 1000 instanceof checks |
Pattern observation: The number of checks grows directly with the number of objects.
Time Complexity: O(n)
This means the time to check all objects grows in a straight line as you add more objects.
[X] Wrong: "The instanceof check is slow and grows exponentially with more objects."
[OK] Correct: Each instanceof check is simple and constant time; the total time grows only as you add more objects, not faster.
Understanding how instanceof checks scale helps you write efficient code when working with many objects, a useful skill in real projects.
"What if we nested instanceof checks inside another loop over the same objects? How would the time complexity change?"