Массив или объект PHP или другая сложная структура данных не может быть перенесена, сохранена или иным образом использована за пределами выполняющегося сценария PHP .Если вы хотите сохранить такую сложную структуру данных за один прогон скрипта, вам нужно сериализовать ее.Это просто означает поместить структуру в «более низкий общий знаменатель», который может обрабатываться другими вещами, кроме PHP, такими как базы данных, текстовые файлы, сокеты.Стандартная функция PHP serialize
- это просто формат , чтобы выразить такую вещь, она сериализует структуру данных в строковое представление, уникальное для PHP, и может быть преобразовано в объект PHP с помощью unserialize
.Однако существует много других форматов, таких как JSON или XML.
Возьмем, к примеру, эту распространенную проблему:
Как передать массив PHP в Javascript?
PHP и Javascript могут общаться только через строки.Вы можете очень легко передать строку "foo"
в Javascript.Вы можете очень легко передать число 1
в Javascript.Вы можете легко передавать логические значения true
и false
в Javascript.Но как передать этот массив в Javascript?
Array ( [1] => elem 1 [2] => elem 2 [3] => elem 3 )
Ответ - сериализация .В случае PHP / Javascript JSON на самом деле является лучшим форматом сериализации:
{ 1 : 'elem 1', 2 : 'elem 2', 3 : 'elem 3' }
Javascript может легко преобразовать это в фактический массив Javascript.
Это так же верно, как представлениехотя та же структура данных:
a:3:{i:1;s:6:"elem 1";i:2;s:6:"elem 2";i:3;s:7:" elem 3";}
Но в значительной степени его использует только PHP, этот формат практически не поддерживается нигде.
Хотя это очень распространено и хорошо поддерживается:
<array>
<element key='1'>elem 1</element>
<element key='2'>elem 2</element>
<element key='3'>elem 3</element>
</array>
Есть много ситуаций, когда вам нужно передать сложные структуры данных в виде строк.Сериализация, представляющая произвольные структуры данных в виде строк, решает, как это сделать.