Как сделать сайтУроки PHP → PHP и JSON, функции json_decode и json_encode

JSON и PHP

Впервые я узнал о формате json, когда стал работать с API вконтакте. Это оказался формат обмена данными, который изначально был создан для языка JavaScript. По этому и расшифровка у этого формата следующая: JavaScript Object Notation. Тем не менее, нашлось применение этому формату во многих языках программирования, в том числе и в php.
Строка json выглядит примерно так:
["1":"yellow";"2":"green";"3":"grey"]
Как вы видите, имя и значение находятся в двойных кавычках, нет никаких пробелов. Эту строку можно будет использовать для передачи данных в методе GET, если позволит длина строки.
Структура передаваемого массива может быть многоуровневой. Что бы создавать подобные строки и декодировать их, в php есть специальный набор функций json.
Запомните, эти функции работает только с UTF-8.

Функция json_encode в php

Функция json_encode способна преобразовать в формат json переменную, массив или объект.
<?php
$msv = array('x1' => 10, 'x2' => 20, 'x3' => 30);
$jmsv= json_encode($msv);
//Содержимое $jmsv после выполнения этого куска кода:
//{"x1":10,"x2":20,"x3":30}
?>
В данном примере массив был преобразован в строку json.

Функция json_decode в php

Функция json_decode служит для расшифровки полученной строки. В результате работы функции мы можем получить массив или объект, в зависимости от выбранного параметра. Функция имеет несколько параметров. Первый является обязательным - это и есть строка, которую мы должны расшифровать. Второй параметр можно не указывать, тогда получим объект, а если указать - получим массив. На примере разберетесь.
<?php
$jmsv = '{"x1":10,"x2":20,"x3":30}';
$outcls=json_decode($json);
$outmsv=json_decode($json, true);
В результате получаем класс $outcls и массив $outmsv. 
?>
Получение данных из класса:
<?php
echo $outcls->{'x1'};
?>
Получение данных из массива:
<?php
echo $outmsv['x1'];
?>

Функция json_last_error в php

Функция не имеет параметров. Возвращает значение, которое поможет понять причину возникновения ошибки:
  • JSON_ERROR_NONE Ошибок нет
  • JSON_ERROR_SYNTAX Синтаксическая ошибка
  • JSON_ERROR_UTF8 Некорректные символы UTF-8, возможно неверная кодировка
  • JSON_ERROR_DEPTH Достигнута максимальная глубина стека
  • JSON_ERROR_STATE_MISMATCH Неверный или не корректный JSON
  • JSON_ERROR_CTRL_CHAR Ошибка управляющего символа, возможно неверная кодировка



Теперь нажмите кнопку, что бы не забыть адрес и вернуться к нам снова.