Не понимаю serialize () - PullRequest
       1

Не понимаю serialize ()

5 голосов
/ 14 января 2010

Я смотрю на эту функцию: serialize () для PHP, и я не совсем понимаю, что это за функция. Может ли кто-нибудь привести простой пример с выводом?

Ответы [ 3 ]

14 голосов
/ 14 января 2010

По сути, цель 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 , кстати.

2 голосов
/ 14 января 2010

Если вы хотите сохранить массив или объект, нормализованный, например, в строке базы данных, serialize()unserialize()) - ваши друзья, потому что вы не можете сохранить массив или объект, сплющенный без предварительного превращения его встрока.

json_encode() и json_decode() похожи, за исключением того, что они кодируются как JSON.

0 голосов
/ 14 января 2010

См. , этот пример , должно быть довольно ясно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...