PHP | Сериализация данных

Опубликовано: 24 Февраля, 2022

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

PHP