Сериализация

Вам когда-нибудь приходилось хранить комплексные данные в базе или в файле? Для того чтобы сконвертировать объект в строку в PHP предусмотрена специальная функция.

Вообще говоря, этих методов 2: serialize() и unserialize()
// сложный массив
$myvar = array(
    'hello',
    42,
    array(1,'two'),
    'apple'
);
 
// конвертируем в строку
$string = serialize($myvar);
 
echo $string;
/* выведет
a:4:{i:0;s:5:"hello";i:1;i:42;i:2;a:2:{i:0;i:1;i:1;s:3:"two";}i:3;s:5:"apple";}
*/
 
// получаем исходное значение
$newvar = unserialize($string);
 
print_r($newvar);
/* выведет
Array
(
    [0] => hello
    [1] => 42
    [2] => Array
        (
            [0] => 1
            [1] => two
        )
 
    [3] => apple
)
*/

Вот так вот работают эти функции. Однако из-за бурного роста популярности JSON, в PHP 5.2 были добавлены 2 метода json_encode() и json_decode(). Их работа схожа с serialize():
// сложные массив
$myvar = array(
    'hello',
    42,
    array(1,'two'),
    'apple'
);
 
// конвертируем в строку
$string = json_encode($myvar);
 
echo $string;
/* выведет
["hello",42,[1,"two"],"apple"]
*/
 
// восстанавливаем исходное значение
$newvar = json_decode($string);
 
print_r($newvar);
/* prints
Array
(
    [0] => hello
    [1] => 42
    [2] => Array
        (
            [0] => 1
            [1] => two
        )
 
    [3] => apple
)
*/

Этот вариант более компактный и совместимый с другими языками, такими как JavaScript. Однако при работе с очень навороченными объектами может возникнуть потеря данных.
Теги:
Сериализация, serialize, unserialize
Добавлено: 10 Мая 2018 18:47:54 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...