Array search functions in PHP - Time & Space Complexity
When we search for a value in an array, the time it takes depends on how many items are in the array.
We want to understand how the search time grows as the array gets bigger.
Analyze the time complexity of the following code snippet.
function searchArray(array $arr, $target) {
foreach ($arr as $item) {
if ($item === $target) {
return true;
}
}
return false;
}
This code looks through each item in the array to find if the target value exists.
Identify the loops, recursion, array traversals that repeat.
- Primary operation: Looping through each element in the array.
- How many times: Up to once for each item until the target is found or the array ends.
As the array gets bigger, the search might check more items.
| Input Size (n) | Approx. Operations |
|---|---|
| 10 | Up to 10 checks |
| 100 | Up to 100 checks |
| 1000 | Up to 1000 checks |
Pattern observation: The number of checks grows roughly the same as the number of items.
Time Complexity: O(n)
This means the time to search grows linearly with the size of the array.
[X] Wrong: "Searching an array always takes the same time no matter how big it is."
[OK] Correct: The search might have to check many items, so bigger arrays usually take longer.
Understanding how search time grows helps you explain and improve code that works with lists.
"What if the array was sorted and we used a binary search instead? How would the time complexity change?"
Practice
false if not found?Solution
Step 1: Understand function purpose
array_searchlooks for a value and returns its key if found.Step 2: Compare with other functions
in_arrayreturns true/false, not key;array_key_existschecks keys;array_keysreturns all keys.Final Answer:
array_search -> Option BQuick Check:
Key returned by array_search = array_search [OK]
- Confusing array_search with in_array
- Thinking array_key_exists returns value
- Assuming array_keys searches values
$arr using in_array?Solution
Step 1: Recall in_array syntax
The correct syntax isin_array(value, array).Step 2: Match syntax with options
in_array(5, $arr); matchesin_array(5, $arr);which is correct.Final Answer:
in_array(5, $arr); -> Option AQuick Check:
in_array(value, array) = in_array(5, $arr) [OK]
- Swapping parameters order
- Using arrow syntax instead of comma
- Passing array as first argument
$arr = ['apple', 'banana', 'cherry'];
$key = array_search('banana', $arr);
echo $key;Solution
Step 1: Understand array_search behavior
It returns the key of the searched value if found.Step 2: Check array keys and searched value
Array keys are 0=>'apple', 1=>'banana', 2=>'cherry'. Searching 'banana' returns key 1.Final Answer:
1 -> Option DQuick Check:
array_search('banana', $arr) = 1 [OK]
- Expecting value instead of key
- Confusing false with 0
- Assuming it returns boolean
$arr = ['x' => 10, 'y' => 20];
if (array_search(30, $arr)) {
echo 'Found';
} else {
echo 'Not Found';
}Solution
Step 1: Analyze array_search return and condition
array_search returns key or false. If key is 0, condition fails because 0 is falsey.Step 2: Check searched value presence
30 is not in array, so array_search returns false, condition is false, prints 'Not Found'. But if value was at key 0, condition would fail incorrectly.Step 3: Suggest correct function for boolean check
Usein_arraywhich returns true/false directly for presence check.Final Answer:
array_search should be replaced with in_array for this check -> Option CQuick Check:
Use in_array for boolean presence check [OK]
- Using array_search in if without strict check
- Ignoring 0 key treated as false
- Not using === to check false
$data = ['a' => 0, 'b' => false, 'c' => null, 'd' => '0'];, which function call correctly checks if the value 0 exists in the array considering type?Solution
Step 1: Understand strict checking
Using third parameter true enforces type checking in in_array and array_search.Step 2: Analyze array values and types
Values are 0 (int), false (bool), null, and '0' (string). Only strict check distinguishes 0 (int) from others.Step 3: Choose correct function and parameters
in_array(0, $data, true) returns true only if exact int 0 found. array_search without strict may confuse types.Final Answer:
in_array(0, $data, true); -> Option AQuick Check:
Use in_array with strict=true for exact type match [OK]
- Ignoring strict parameter causing false positives
- Using array_search without strict for type-sensitive check
- Confusing '0' string with 0 integer
Ready to prove it?
Pass the test and this pattern moves unknown
