По сути, цель serialize
- преобразовать любой тип данных (почти) в строку, чтобы их можно было передавать, сохранять, ...
Быстрый пример:
$my_array = array(
'a' => 10,
'glop' => array('test', 'blah'),
);
$serialized = serialize($my_array);
echo $serialized;
Получит вам этот вывод:
a:2:{s:1:"a";i:10;s:4:"glop";a:2:{i:0;s:4:"test";i:1;s:4:"blah";}}
И позже вы можете unserialize
эту строку, чтобы получить исходные данные:
$serialized = 'a:2:{s:1:"a";i:10;s:4:"glop";a:2:{i:0;s:4:"test";i:1;s:4:"blah";}}';
$data = unserialize($serialized);
var_dump($data);
Получит вас:
array
'a' => int 10
'glop' =>
array
0 => string 'test' (length=4)
1 => string 'blah' (length=4)
Общие использования включают в себя:
- Возможность передавать (почти) любой вид данных PHP из одного сценария PHP в другой
- Возможность хранить (почти) любой вид данных PHP в одном поле базы данных - даже если это не очень хорошая практика на стороне базы данных, иногда это может быть полезно
- Возможность хранить данные в некотором кэширующем механизме (APC, memcached, files, ...), в котором вы можете хранить только строки
Обратите внимание, что использование serialize
замечательно, когда вы работаете только с PHP (так как это специфичный для PHP формат, он способен работать практически с любыми данными PHP и работает очень быстро) ; но это не так здорово, когда вам нужно работать с чем-то еще, кроме PHP (так как это специфично для PHP) . В этих случаях вы можете использовать XML, JSON (см. json_encode
и json_decode
), ...
В руководстве по PHP вы также можете прочитать раздел Object Serialization , кстати.