Bird
Raised Fist0
PHPprogramming~10 mins

JSON encoding and decoding in PHP - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - JSON encoding and decoding
Start with PHP array/object
↓
Encode to JSON string using json_encode()
↓
Use JSON string (e.g., save, send)
↓
Decode JSON string back to PHP using json_decode()
↓
Get PHP array/object back
↓
End
This flow shows how PHP arrays or objects are turned into JSON strings and back again.
Execution Sample
PHP
<?php
$data = ['name' => 'Anna', 'age' => 25];
$json = json_encode($data);
$decoded = json_decode($json, true);
print_r($decoded);
?>
This code converts a PHP array to JSON string and then back to a PHP array, printing the result.
Execution Table
StepActionInputOutputNotes
1Define PHP array$data = ['name' => 'Anna', 'age' => 25]Array with keys 'name' and 'age'Initial PHP data
2Encode to JSONjson_encode($data){"name":"Anna","age":25}PHP array converted to JSON string
3Decode JSONjson_decode($json, true)Array with keys 'name' and 'age'JSON string converted back to PHP array
4Print resultprint_r($decoded)Array ( [name] => Anna [age] => 25 )Output shows decoded PHP array
💡 All steps complete, PHP array encoded and decoded successfully.
Variable Tracker
VariableStartAfter Step 1After Step 2After Step 3Final
$dataundefined['name' => 'Anna', 'age' => 25]['name' => 'Anna', 'age' => 25]['name' => 'Anna', 'age' => 25]['name' => 'Anna', 'age' => 25]
$jsonundefinedundefined{"name":"Anna","age":25}{"name":"Anna","age":25}{"name":"Anna","age":25}
$decodedundefinedundefinedundefined['name' => 'Anna', 'age' => 25]['name' => 'Anna', 'age' => 25]
Key Moments - 3 Insights
Why do we use json_encode() before sending data?
json_encode() converts PHP arrays or objects into a JSON string, which is a text format that can be easily sent or stored. See step 2 in the execution_table.
What does the second parameter 'true' in json_decode() do?
It tells json_decode() to return an associative PHP array instead of an object. This is shown in step 3 where the output is an array.
Why does print_r show the array after decoding?
Because json_decode with 'true' returns a PHP array, print_r displays it in a readable array format as in step 4.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table, what is the value of $json after step 2?
Aundefined
BArray with keys 'name' and 'age'
C{"name":"Anna","age":25}
DArray ( [name] => Anna [age] => 25 )
💡 Hint
Check the Output column in row for step 2 in execution_table.
At which step does $decoded get its value?
AStep 1
BStep 3
CStep 2
DStep 4
💡 Hint
Look at the Action and Variable columns in execution_table and variable_tracker.
If we remove 'true' from json_decode, what changes in $decoded?
A$decoded becomes a PHP object instead of an array
B$decoded becomes a JSON string
C$decoded becomes null
DNo change, still an array
💡 Hint
Recall the role of the second parameter in json_decode from key_moments.
Concept Snapshot
PHP JSON encoding and decoding:
- Use json_encode() to convert PHP arrays/objects to JSON strings.
- Use json_decode() to convert JSON strings back to PHP arrays or objects.
- json_decode() second param true returns associative arrays.
- Useful for data exchange and storage in text format.
Full Transcript
This example shows how PHP arrays or objects are converted to JSON strings using json_encode(), then converted back to PHP arrays using json_decode() with the second parameter true. The execution table traces each step: defining the array, encoding it to JSON, decoding it back, and printing the result. The variable tracker shows how variables change after each step. Key moments clarify why encoding is needed, the meaning of the true parameter in decoding, and why print_r shows an array. The quiz tests understanding of variable values at each step and the effect of parameters. This process is essential for exchanging data in web applications.

Practice

(1/5)
1. What does the PHP function json_encode() do?
easy
A. Converts PHP data into a JSON formatted string
B. Converts JSON string into PHP data
C. Validates JSON syntax
D. Reads JSON data from a file

Solution

  1. Step 1: Understand the purpose of json_encode()

    This function takes PHP variables like arrays or objects and converts them into a JSON string format.
  2. Step 2: Differentiate from json_decode()

    json_decode() does the opposite by converting JSON strings back to PHP data.
  3. Final Answer:

    Converts PHP data into a JSON formatted string -> Option A
  4. Quick Check:

    json_encode() = PHP to JSON string [OK]
Hint: json_encode() makes PHP data into JSON text [OK]
Common Mistakes:
  • Confusing json_encode() with json_decode()
  • Thinking json_encode() reads JSON from files
  • Assuming json_encode() validates JSON syntax
2. Which of the following is the correct syntax to decode a JSON string into a PHP array?
easy
A. $data = json_encode($jsonString, true);
B. $data = json_decode($jsonString, true);
C. $data = json_decode($jsonString);
D. $data = json_encode($jsonString);

Solution

  1. Step 1: Identify the function to decode JSON

    The function to convert JSON string to PHP data is json_decode().
  2. Step 2: Use the second parameter to get an array

    Passing true as the second argument returns an associative array instead of an object.
  3. Final Answer:

    $data = json_decode($jsonString, true); -> Option B
  4. Quick Check:

    json_decode() with true returns array [OK]
Hint: Use json_decode($json, true) for PHP arrays [OK]
Common Mistakes:
  • Using json_encode() instead of json_decode()
  • Omitting the second parameter to get an array
  • Passing true to json_encode() which is invalid
3. What will be the output of the following PHP code?
$arr = ['name' => 'Anna', 'age' => 25];
$json = json_encode($arr);
echo $json;
medium
A. {"name":"Anna","age":25}
B. Array
C. name: Anna, age: 25
D. Error: Cannot encode array

Solution

  1. Step 1: Understand json_encode output

    The function converts the PHP associative array into a JSON string with keys and values in double quotes.
  2. Step 2: Check the exact JSON string format

    The output is a JSON object string: {"name":"Anna","age":25} with escaped quotes when printed.
  3. Final Answer:

    {"name":"Anna","age":25} -> Option A
  4. Quick Check:

    json_encode() outputs JSON string [OK]
Hint: json_encode() outputs JSON string with quotes [OK]
Common Mistakes:
  • Expecting PHP array print instead of JSON string
  • Missing quotes around keys and values
  • Confusing output with plain text or error
4. Identify the error in this PHP code snippet:
$json = '{"fruit":"apple","count":3}';
$data = json_decode($json, true);
echo $data->fruit;
medium
A. json_decode cannot parse this JSON
B. Incorrect JSON string format
C. Missing second parameter in json_decode
D. Using object syntax on an array after json_decode

Solution

  1. Step 1: Check json_decode parameters

    The second parameter true makes json_decode return an associative array.
  2. Step 2: Accessing array with object syntax

    Using $data->fruit tries to access an object property, but $data is an array, so this causes an error.
  3. Final Answer:

    Using object syntax on an array after json_decode -> Option D
  4. Quick Check:

    json_decode(true) returns array, use $data['fruit'] [OK]
Hint: Use $data['key'] if json_decode(true) used [OK]
Common Mistakes:
  • Accessing array as object after json_decode(true)
  • Assuming JSON string is invalid
  • Forgetting to pass true for array output
5. You have a PHP array:
$data = ["id" => 101, "tags" => ["php", "json", "coding"]];

Which code correctly encodes this array to JSON and then decodes it back to a PHP object?
hard
A. $json = json_encode($data); $obj = json_decode($json, true);
B. $json = json_decode($data); $obj = json_encode($json);
C. $json = json_encode($data); $obj = json_decode($json);
D. $json = json_encode($data, true); $obj = json_decode($json, true);

Solution

  1. Step 1: Encode PHP array to JSON string

    Use json_encode($data) to convert the PHP array into a JSON string.
  2. Step 2: Decode JSON string back to PHP object

    Calling json_decode($json) without the second parameter returns a PHP object.
  3. Final Answer:

    $json = json_encode($data); $obj = json_decode($json); -> Option C
  4. Quick Check:

    Encode then decode without true returns object [OK]
Hint: json_decode() without true returns object [OK]
Common Mistakes:
  • Using json_decode before json_encode
  • Passing true to json_encode (invalid)
  • Decoding with true returns array, not object
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard