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 data echo $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 data echo $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 и многими другими языками. Однако для сложных объектов некоторая информация может быть потеряна.