Версия для печати. Взято с сайта phpsql.ru

На главную   Назад   Вперед

5: Массив в строку

Помещение массива в строковую переменную и обратное восстановление массива

Хотя массивы довольно удобны, иногда они не очень приветствуются. Например, вы не можете непосредственно сохранить массив в Cookies или в сессии. MySQL и XML тоже не умеют работать с массивами.

Однако проблему можно решить путем преобразования PHP-массива в строку, которую можно сохранить где угодно. Для этого нужно использовать функцию serialize (). Рассмотрим сценарий, использующий эту функцию (мы будем считать, что переменная $alacarte такая же, как в предыдущем примере):

<?php
$menu = array( 
"appetizer" => "fruit", 
"entree" => "roast beef", 
"dessert" => $alacarte);

$menu_s = serialize($menu);
echo $menu_s;
?>
При запуске сценария мы увидим следующий вывод:
РЕа:3:{s:9:"appetizer";s:5:"fruit";s:б:"entree";s:10:"roast
beef";s:7:"dessert";a:3:{i:0;s:19:"chocolate ice cream";i:1;s:15:"vanilla
pudding";i:2;s:15:"snozzberry whip";}}
Данную строку вы можете сохранить где угодно - в Cookies, базах данных, скрытых POST-полях формы. Чтобы восстановить сериализированный массив, используйте функцию unserialize():
$menu = unserialize($menu_s);
Что может быть не так?

serialize() - превосходная функция, но у нее есть несколько особенностей, о которых вы должны знать. Прежде всего помните, что кто угодно может прочитать сериализированные массивы, поэтому если вы собираетесь сохранить важную информацию в Cookies или сессии, ее сначала нужно зашифровать, иначе злоумышленники смогут перехватить ваши данные (см. п. #23).

Во-вторых, не нужно злоупотреблять этой функцией. Если вы часто ее используете, возможно, вам нужно перепроектировать структуру базы данных или механизм памяти.

В-третьих, избегайте передачи сериализированных массивов с использованием GET-метода, поскольку он не позволяет передавать длинные строки.

 
Предыдущая   На главную   Следующая