JSON encoding and decoding in PHP - Time & Space Complexity
When working with JSON in PHP, we often convert data back and forth between arrays and strings.
We want to know how the time to do this changes as the data size grows.
Analyze the time complexity of the following code snippet.
$data = ["name" => "Alice", "age" => 30, "hobbies" => ["reading", "cycling"]];
$jsonString = json_encode($data);
$decodedData = json_decode($jsonString, true);
This code converts a PHP array to a JSON string and then back to an array.
Identify the loops, recursion, array traversals that repeat.
- Primary operation: Traversing the entire data structure to convert it to JSON and back.
- How many times: Each element in the array and nested arrays is visited once during encoding and once during decoding.
As the data size grows, the time to encode and decode grows roughly in proportion to the number of elements.
| Input Size (n) | Approx. Operations |
|---|---|
| 10 | About 20 (encoding + decoding each element once) |
| 100 | About 200 |
| 1000 | About 2000 |
Pattern observation: The operations grow roughly linearly as the data size increases.
Time Complexity: O(n)
This means the time to encode and decode grows in a straight line with the size of the data.
[X] Wrong: "JSON encoding and decoding is instant and does not depend on data size."
[OK] Correct: The process must look at every piece of data, so bigger data takes more time.
Understanding how JSON encoding and decoding scales helps you write efficient data handling code and answer questions about performance clearly.
"What if the data contains deeply nested arrays? How would the time complexity change?"
Practice
json_encode() do?Solution
Step 1: Understand the purpose of
This function takes PHP variables like arrays or objects and converts them into a JSON string format.json_encode()Step 2: Differentiate from
json_decode()json_decode()does the opposite by converting JSON strings back to PHP data.Final Answer:
Converts PHP data into a JSON formatted string -> Option AQuick Check:
json_encode() = PHP to JSON string [OK]
- Confusing json_encode() with json_decode()
- Thinking json_encode() reads JSON from files
- Assuming json_encode() validates JSON syntax
Solution
Step 1: Identify the function to decode JSON
The function to convert JSON string to PHP data isjson_decode().Step 2: Use the second parameter to get an array
Passingtrueas the second argument returns an associative array instead of an object.Final Answer:
$data = json_decode($jsonString, true); -> Option BQuick Check:
json_decode() with true returns array [OK]
- Using json_encode() instead of json_decode()
- Omitting the second parameter to get an array
- Passing true to json_encode() which is invalid
$arr = ['name' => 'Anna', 'age' => 25]; $json = json_encode($arr); echo $json;
Solution
Step 1: Understand json_encode output
The function converts the PHP associative array into a JSON string with keys and values in double quotes.Step 2: Check the exact JSON string format
The output is a JSON object string: {"name":"Anna","age":25} with escaped quotes when printed.Final Answer:
{"name":"Anna","age":25} -> Option AQuick Check:
json_encode() outputs JSON string [OK]
- Expecting PHP array print instead of JSON string
- Missing quotes around keys and values
- Confusing output with plain text or error
$json = '{"fruit":"apple","count":3}';
$data = json_decode($json, true);
echo $data->fruit;Solution
Step 1: Check json_decode parameters
The second parametertruemakes json_decode return an associative array.Step 2: Accessing array with object syntax
Using$data->fruittries to access an object property, but $data is an array, so this causes an error.Final Answer:
Using object syntax on an array after json_decode -> Option DQuick Check:
json_decode(true) returns array, use $data['fruit'] [OK]
- Accessing array as object after json_decode(true)
- Assuming JSON string is invalid
- Forgetting to pass true for array output
$data = ["id" => 101, "tags" => ["php", "json", "coding"]];
Which code correctly encodes this array to JSON and then decodes it back to a PHP object?
Solution
Step 1: Encode PHP array to JSON string
Usejson_encode($data)to convert the PHP array into a JSON string.Step 2: Decode JSON string back to PHP object
Callingjson_decode($json)without the second parameter returns a PHP object.Final Answer:
$json = json_encode($data); $obj = json_decode($json); -> Option CQuick Check:
Encode then decode without true returns object [OK]
- Using json_decode before json_encode
- Passing true to json_encode (invalid)
- Decoding with true returns array, not object
Ready to prove it?
Pass the test and this pattern moves unknown
