JSON расшифровывается как JavaScript Object Notation и является популярным форматом для хранения и обмена данными. Данные JSON можно легко преобразовать в массивы или объекты PHP и обратно с помощью встроенных функций. В этом сообщении блога мы узнаем, как создавать и анализировать данные JSON с помощью PHP, используя несколько простых примеров.

Создание данных JSON с помощью PHP

Чтобы создать данные JSON из значения PHP, мы можем использовать функцию json_encode(). Эта функция принимает значение PHP в качестве аргумента и возвращает строку в кодировке JSON. JSON может кодировать различные типы значений, такие как строки, числа, логические значения, пустые значения, массивы и объекты. Например, если у нас есть такой ассоциативный массив:

$marks = [
  "John" => 68,
  "George" => 75,
  "David" => 65,
  "Roger" => 40
];

Мы можем закодировать его как объект JSON, используя json_encode():

echo json_encode($marks);

Вывод будет:

{"John":68,"George":75,"David":65,"Roger":40}

Точно так же, если у нас есть такой индексированный массив:

$colors = [
  "Blue",
  "White",
  "Green",
  "Black",
  "Yellow"
];

Мы можем закодировать его как массив JSON, используя json_encode():

echo json_encode($colors);

Вывод будет:

["Blue","White","Green","Black","Yellow"]

Обратите внимание, что json_encode() работает только со строками в кодировке UTF-8, поэтому убедитесь, что ваш ввод правильно закодирован.

Разбор данных JSON с помощью PHP

Чтобы преобразовать данные JSON в значение PHP, мы можем использовать функцию json_decode(). Эта функция принимает в качестве аргумента строку в формате JSON и возвращает значение PHP. Например, если у нас есть такая строка JSON:

{"type":"donut","name":"Cake","toppings":[{"id":"5002","type":"Glazed"},{"id":"5006","type":"Chocolate with Sprinkles"},{"id":"5004","type":"Maple"}]}

Мы можем декодировать его в объект PHP, используя json_decode():

$json = '{"type":"donut","name":"Cake","toppings":[{"id":"5002","type":"Glazed"},{"id":"5006","type":"Chocolate with Sprinkles"},{"id":"5004","type":"Maple"}]}';
$obj = json_decode($json);
var_dump($obj);

Вывод будет:

object(stdClass)#1 (3) {
  ["type"]=>
  string(5) "donut"
  ["name"]=>
  string(4) "Cake"
  ["toppings"]=>
  array(3) {
    [0]=>
    object(stdClass)#2 (2) {
      ["id"]=>
      string(4) "5002"
      ["type"]=>
      string(6) "Glazed"
    }
    [1]=>
    object(stdClass)#3 (2) {
      ["id"]=>
      string(4) "5006"
      ["type"]=>
      string(22) "Chocolate with Sprinkles"
    }
    [2]=>
    object(stdClass)#4 (2) {
      ["id"]=>
      string(4) "5004"
      ["type"]=>
      string(5) "Maple"
    }
  }
}

По умолчанию json_decode() возвращает объект типа stdClass. Однако мы также можем указать второй параметр $assoc как true, чтобы вместо этого получить ассоциативный массив. Например:

$json = '{"type":"donut","name":"Cake","toppings":[{"id":"5002","type":"Glazed"},{"id":"5006","type":"Chocolate with Sprinkles"},{"id":"5004","type":"Maple"}]}';
$arr = json_decode($json, true);
var_dump($arr);

Вывод будет:

array(3) {
  ["type"]=>
  string(5) "donut"
  ["name"]=>
  string(4) "Cake"
  ["toppings"]=>
  array(3) {
    [0]=>
    array(2) {
      ["id"]=>
      string(4) "5002"
      ["type"]=>
      string(6) "Glazed"
    }
    [1]=>
    array(2) {
      ["id"]=>
      string(4) "5006"
      ["type"]=>
      string(22) "Chocolate with Sprinkles"
    }
    [2]=>
    array(2) {
      ["id"]=>
      string(4) "5004"
      ["type"]=>
      string(5) "Maple"
    }
  }
}

Доступ к данным JSON с помощью PHP

Как только мы декодировали данные JSON в значение PHP, мы можем получить доступ к его элементам, используя стандартный синтаксис для массивов или объектов. Существуют разные способы доступа к элементам объекта или массива JSON, в зависимости от того, используем ли мы ассоциативный массив или объект.

Доступ к данным JSON как к объекту

Если мы используем объект для хранения декодированных данных JSON, мы можем получить доступ к его свойствам с помощью оператора стрелки (->). Например, если у нас есть такой объект PHP:

$obj = json_decode('{"Peter":35,"Ben":37,"Joe":43}');

Мы можем получить доступ к его свойствам с помощью оператора стрелки (->):

echo $obj->Peter; // Output: 35
echo $obj->Ben; // Output: 37
echo $obj->Joe; // Output: 43

Мы также можем перебирать свойства объекта, используя цикл foreach. Например:

foreach ($obj as $key => $value) {
  echo $key . " => " . $value . "<br>";
}
// Output:
// Peter => 35
// Ben => 37
// Joe => 43

Доступ к данным JSON в виде массива

Если мы используем ассоциативный массив для хранения декодированных данных JSON, мы можем получить доступ к его элементам с помощью квадратных скобок ([]). Например, если у нас есть такой ассоциативный массив PHP:

$arr = json_decode('{"Peter":35,"Ben":37,"Joe":43}', true);

Мы можем получить доступ к его элементам, используя квадратные скобки ([]):

echo $arr["Peter"]; // Output: 35
echo $arr["Ben"]; // Output: 37
echo $arr["Joe"]; // Output: 43

Мы также можем перебрать элементы массива, используя цикл foreach. Например:

foreach ($arr as $key => $value) {
  echo $key . " => " . $value . "<br>";
}
// Output:
// Peter => 35
// Ben => 37
// Joe => 43

В этом сообщении блога мы узнали, как создавать и анализировать данные JSON с помощью PHP, используя встроенные функции json_encode() и json_decode(). Мы также узнали, как получить доступ к декодированным значениям и управлять ими с помощью массивов или объектов. Мы также объяснили различные типы значений, которые можно закодировать в JSON, и различные способы доступа к ним в PHP. JSON — это мощный и гибкий формат для обмена данными, а PHP упрощает работу с ним.

Спасибо за прочтение!