Type casting syntax in PHP - Time & Space Complexity
Let's see how the time needed to change a value's type grows as the input size changes.
We want to know how fast type casting runs when the input gets bigger.
Analyze the time complexity of the following code snippet.
$array = ["1", "2", "3", "4", "5"];
$intArray = [];
foreach ($array as $value) {
$intArray[] = (int) $value;
}
This code converts each string in an array to an integer and stores it in a new array.
- Primary operation: Looping through each element in the array and casting it to an integer.
- How many times: Once for every item in the input array.
Each new item adds one more cast operation, so the total work grows steadily with the number of items.
| Input Size (n) | Approx. Operations |
|---|---|
| 10 | 10 casts |
| 100 | 100 casts |
| 1000 | 1000 casts |
Pattern observation: The work grows in a straight line as the input size grows.
Time Complexity: O(n)
This means the time to finish grows directly with the number of items you convert.
[X] Wrong: "Type casting is instant and does not depend on input size."
[OK] Correct: Each item must be processed one by one, so more items mean more work.
Understanding how simple operations like type casting scale helps you explain code efficiency clearly and confidently.
"What if we changed the array to a nested array and cast each inner value? How would the time complexity change?"
Practice
$num = (int) "123";Solution
Step 1: Identify the type casting operation
The code uses (int) before a string variable, which means it converts the string to an integer.Step 2: Understand the conversion result
The string "123" becomes the integer 123 after casting.Final Answer:
Converts the string "123" to an integer 123 -> Option AQuick Check:
Type casting (int) converts string "123" to integer 123 [OK]
- Thinking it converts integer to string
- Expecting a syntax error
- Assuming the variable stays a string
$value to a float in PHP?Solution
Step 1: Recall PHP type casting syntax
PHP uses (type) before a variable to cast it, so (float) $value is correct.Step 2: Check each option
$floatValue = float($value); uses a function-like syntax which is invalid. $floatValue = cast float $value; uses invalid syntax. $floatValue = (float)$value[]; tries to cast an array element incorrectly.Final Answer:
$floatValue = (float) $value; -> Option AQuick Check:
Correct cast syntax is (float) $value [OK]
- Using function call syntax like float($value)
- Writing cast without parentheses
- Adding invalid array brackets after cast
$a = "10 apples";
$b = (int) $a;
echo $b;
Solution
Step 1: Understand casting string with numbers and text
When casting a string starting with numbers to int, PHP converts the leading number part only.Step 2: Apply casting to the string "10 apples"
The string starts with "10", so (int) "10 apples" becomes integer 10.Final Answer:
10 -> Option CQuick Check:
String starting with digits casts to those digits as int [OK]
- Expecting full string output
- Thinking casting fails with text
- Assuming zero because of text
$value = "123.45";
$intValue = int($value);
echo $intValue;
Solution
Step 1: Check the casting syntax used
The code uses int($value), which looks like a function call but PHP does not have int() function for casting.Step 2: Identify correct casting method
PHP uses (int) $value to cast, not int($value).Final Answer:
int() is not a valid cast syntax in PHP -> Option BQuick Check:
Use (int) for casting, not int() function [OK]
- Using int() like a function
- Confusing casting with function calls
- Ignoring PHP casting syntax rules
$data = ["5", "3.14", "true", "false", "0"];, which PHP code correctly casts each element to its proper type (int, float, bool) using type casting syntax and stores results in $result?Solution
Step 1: Analyze required casts for each element
"5" should be int, "3.14" float, "true" and "false" to bool, "0" to bool.Step 2: Check each option for correct casting syntax and types
$result = [(int)$data[0], (float)$data[1], (bool)$data[2], (bool)$data[3], (bool)$data[4]]; uses correct (type) syntax and casts each element properly. $result = [int($data[0]), float($data[1]), bool($data[2]), bool($data[3]), bool($data[4])]; uses invalid function-like casts. $result = [(int)$data[0], (int)$data[1], (bool)$data[2], (bool)$data[3], (int)$data[4]]; casts "3.14" to int incorrectly. $result = [(float)$data[0], (float)$data[1], (string)$data[2], (string)$data[3], (bool)$data[4]]; casts "true" and "false" to string incorrectly.Final Answer:
$result = [(int)$data[0], (float)$data[1], (bool)$data[2], (bool)$data[3], (bool)$data[4]]; -> Option DQuick Check:
Use (type) syntax and correct types for each element [OK]
- Using function calls instead of casting syntax
- Casting floats as int incorrectly
- Casting booleans as strings
Ready to prove it?
Pass the test and this pattern moves unknown
