Сериализация
Предположим, перед нами поставлена задача разработать тестовую систему (для тестирования знаний), и необходимо, чтобы можно было продолжить тест с того места, с которого он был прерван.
Мы можем использовать Cookies для этой цели. Но существует вопрос - как записать массив в Cookies?
Сохраниять массив в Cookies мы не можем, зато может сохранить строку. Функция Serialize() позволяет преобразовать любой объект в строку. Ей и можно воспользоваться для сохранения массива в Cookies.
Строка, полученная в результате сериализации функцией serialize(), имеет специальный формат. Для восстановления исходных данных (в нашем случае - массива) необходимо использовать функцию unserialize(). Приведем пример реализации сохранения массива в переменную (строковую), преобразовав массив в строку с помощью serialize():
<?php
// Предварительно создадим массив, записав в него случайные числа (10 значений):
for ($i=1; $i<=10; $i++) {
mt_srand();
$rn = mt_rand(0,200);
$arr[$i]=$rn;
// Выводим в браузер информацию, записанную в массив:
echo "<b>$arr[$i]</b><br>";
}
// Преобразовываем полученный массив $arr в строку с помощью функции serialize():
$s_arr = serialize($arr);
// Выводим строку, в которую был "упакован" массив $arr:
echo "<h3>Результат упаковки массива:</h3><h4 style=\"color:green\">$s_arr</h4>";
echo "<h3>А теперь распаковываем строку, содержащую массив:</h3>";
// Распаковываем массив из строки, используя функцию unserialize()
$uns_arr = unserialize($s_arr);
foreach ($uns_arr as $res_arr) echo "<b>$res_arr</b><br>";
?>
Очень удобно использовать функцию serialize() для передачи множества параметров через запросы GET или POST в "упакованном" виде одной строкой, предварительно преобразовав "упакованные" для передачи через GET или POST - запросы.