Un tableau ou un objet PHP ou une autre structure de données complexe peut pas être transporté, stocké ou utilisé d'une autre manière en dehors d'un script PHP en cours d'exécution . Si vous souhaitez conserver une structure de données aussi complexe au-delà d'une seule exécution d'un script, vous devez sérialiser . Cela signifie simplement mettre la structure dans un "plus petit dénominateur commun" qui peut être géré par des choses autres que PHP, comme les bases de données, les fichiers texte, les sockets. La fonction PHP standard serializeest juste un format pour exprimer une telle chose, elle sérialise une structure de données en une représentation sous forme de chaîne qui est unique à PHP et peut être inversée en un objet PHP en utilisant unserialize. Il existe cependant de nombreux autres formats, comme JSON ou XML.
Prenons par exemple ce problème courant:
Comment passer un tableau PHP à Javascript?
PHP et Javascript ne peuvent communiquer que via des chaînes. Vous pouvez passer la chaîne "foo"très facilement à Javascript. Vous pouvez passer le numéro 1très facilement à Javascript. Vous pouvez passer les valeurs booléennes trueet falsefacilement à Javascript. Mais comment passer ce tableau à Javascript?
Array ( [1] => elem 1 [2] => elem 2 [3] => elem 3 )
La réponse est la sérialisation . Dans le cas de PHP / Javascript, JSON est en fait le meilleur format de sérialisation:
{ 1 : 'elem 1', 2 : 'elem 2', 3 : 'elem 3' }
Javascript peut facilement inverser cela dans un tableau Javascript réel.
Ceci est tout aussi valide une représentation de la même structure de données:
a:3:{i:1;s:6:"elem 1";i:2;s:6:"elem 2";i:3;s:7:" elem 3";}
Mais à peu près seul PHP l'utilise, il y a peu de support pour ce format ailleurs.
Ceci est très courant et bien pris en charge également:
<array>
<element key='1'>elem 1</element>
<element key='2'>elem 2</element>
<element key='3'>elem 3</element>
</array>
Il existe de nombreuses situations dans lesquelles vous devez transmettre des structures de données complexes sous forme de chaînes. La sérialisation, qui représente des structures de données arbitraires sous forme de chaînes, résout comment procéder.