Массив или объект 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>
Есть много ситуаций, когда вам нужно передать сложные структуры данных в виде строк. Сериализация, представляющая произвольные структуры данных в виде строк, решает, как это сделать.