Bird
Raised Fist0
PHPprogramming~5 mins

JSON encoding and decoding in PHP

Choose your learning style10 modes available
Introduction

JSON encoding and decoding lets you turn PHP data into a string format that computers can share easily, and then turn it back into PHP data.

When you want to send PHP data to a web browser or another program.
When you receive data from a web service and want to use it in PHP.
When you want to save PHP data in a file or database in a simple text format.
When you need to exchange data between different programming languages.
Syntax
PHP
$jsonString = json_encode($phpData);
$phpData = json_decode($jsonString, true);

json_encode() converts PHP data (like arrays or objects) into a JSON string.

json_decode() converts a JSON string back into PHP data. Use true as the second argument to get an array instead of an object.

Examples
This turns a PHP array into a JSON string.
PHP
$data = ['name' => 'Anna', 'age' => 25];
$json = json_encode($data);
echo $json;
This turns a JSON string back into a PHP array.
PHP
$json = '{"name":"Anna","age":25}';
$data = json_decode($json, true);
print_r($data);
Decoding without true returns an object. You can access properties with ->.
PHP
$object = json_decode($json);
echo $object->name;
Sample Program

This program shows how to encode a PHP array into JSON and then decode it back to a PHP array.

PHP
<?php
// Create PHP array
$user = ['username' => 'johndoe', 'email' => 'john@example.com', 'active' => true];

// Convert PHP array to JSON string
$jsonString = json_encode($user);
echo "JSON string:\n" . $jsonString . "\n\n";

// Convert JSON string back to PHP array
$decodedArray = json_decode($jsonString, true);
echo "Decoded PHP array:\n";
print_r($decodedArray);
?>
OutputSuccess
Important Notes

JSON only supports certain data types: strings, numbers, arrays, objects, booleans, and null.

When decoding, use true as the second argument to get an associative array instead of an object.

Always check if json_encode() or json_decode() returns false to catch errors.

Summary

Use json_encode() to turn PHP data into a JSON string.

Use json_decode() to turn a JSON string back into PHP data.

JSON is a simple way to share data between programs and languages.

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