Un array o un oggetto PHP o un'altra struttura di dati complessa non possono essere trasportati, archiviati o utilizzati in altro modo al di fuori di uno script PHP in esecuzione . Se si desidera mantenere una struttura di dati così complessa oltre una singola esecuzione di uno script, è necessario serializzarla . Ciò significa semplicemente mettere la struttura in un "denominatore comune inferiore" che può essere gestito da cose diverse da PHP, come database, file di testo, socket. La funzione PHP standard serializeè solo un formato per esprimere una cosa del genere, serializza una struttura di dati in una rappresentazione di stringa che è unica per PHP e può essere invertita in un oggetto PHP usando unserialize. Esistono molti altri formati, come JSON o XML.
Prendi ad esempio questo problema comune:
Come passo un array PHP a Javascript?
PHP e Javascript possono comunicare solo tramite stringhe. Puoi passare la stringa "foo"molto facilmente a Javascript. Puoi passare il numero 1molto facilmente a Javascript. Puoi passare i valori booleani truee falsefacilmente a Javascript. Ma come si passa questo array a Javascript?
Array ( [1] => elem 1 [2] => elem 2 [3] => elem 3 )
La risposta è la serializzazione . In caso di PHP / Javascript, JSON è in realtà il miglior formato di serializzazione:
{ 1 : 'elem 1', 2 : 'elem 2', 3 : 'elem 3' }
Javascript può facilmente invertirlo in un vero array Javascript.
Questa è una rappresentazione altrettanto valida della stessa struttura dati:
a:3:{i:1;s:6:"elem 1";i:2;s:6:"elem 2";i:3;s:7:" elem 3";}
Ma praticamente solo PHP lo usa, c'è poco supporto per questo formato altrove.
Questo è molto comune e anche ben supportato:
<array>
<element key='1'>elem 1</element>
<element key='2'>elem 2</element>
<element key='3'>elem 3</element>
</array>
Esistono molte situazioni in cui è necessario trasferire strutture di dati complesse come stringhe. La serializzazione, che rappresenta strutture di dati arbitrarie come stringhe, risolve come farlo.