PHP | Сериализация данных
Чаще всего нам нужно хранить сложный массив в базе данных или в файле из PHP. Некоторые из нас наверняка искали какую-нибудь встроенную функцию для выполнения этой задачи. Сложные массивы - это массивы с элементами более чем одного типа данных или массива.
Но у нас уже есть удобное решение для этой ситуации. Нам не нужно писать собственную функцию для преобразования сложного массива в форматированную строку. Есть два популярных метода сериализации переменных.
- сериализовать ()
- unserialize ()
We can serialize any data in PHP using the serialize() function. The serialize() function accepts a single parameter which is the data we want to serialize and returns a serialized string. Below program illustrate this:
<?php // a complex array$myvar = array( "hello", 42, array(1, "two"), "apple"); // convert to a string$string = serialize($myvar); // printing the serialized dataecho $string; ?> |
Выход:
a: 4: {i: 0; s: 5: "привет"; i: 1; i: 42; i: 2; a: 2: {i:
0; i: 1; i: 1; s: 3: "два";} i: 3; s: 5: "яблоко";}
Из приведенного выше кода у нас есть переменная с сериализованными данными, $ string . Мы можем десериализовать значение переменной с помощью функции unserialize (), чтобы вернуться к исходному значению сложного массива $ myvar .
Программа ниже иллюстрирует функции serialize () и unserialize ():
Выход:
Множество
(
[0] => привет
[1] => 42
[2] => Массив
(
[0] => 1
[1] => два
)
[3] => яблоко
)
Это был собственный метод сериализации PHP. Однако, поскольку в последние годы JSON стал настолько популярным, они решили добавить его поддержку в PHP 5.2. Теперь вы можете использовать функции json_encode () и json_decode () для сериализации и десериализации данных в PHP соответственно.
Поскольку формат JSON является только текстовым, его можно легко отправлять на сервер и с сервера, а также использовать в качестве формата данных на любом языке программирования.
Lets have a look how to use json_encode() in PHP:
<?php // a complex array$myvar = array( "hello", 42, array(1, "two"), "apple"); // serializing data$string = json_encode($myvar); // printing the serialized dataecho $string; ?> |
Выход:
[«привет», 42, [1, «два»], «яблоко»]
We can decode the data encoded in above program using the json_decode() function to get the original complex array. Below program illustrate this:
<?php // a complex array$myvar = array( "hello", 42, array(1, "two"), "apple"); // serializing data$string = json_encode($myvar); // decoding the above encoded string$newvar = json_decode($string); // printing the decoded data print_r($newvar); ?> |
Выход:
Множество
(
[0] => привет
[1] => 42
[2] => Массив
(
[0] => 1
[1] => два
)
[3] => яблоко
)
Примечание . Кодирование и декодирование JSON более компактно и, что самое главное, совместимо с javascript и многими другими языками. Однако для сложных объектов некоторая информация может быть потеряна.