Ein PHP-Array oder -Objekt oder eine andere komplexe Datenstruktur kann nicht außerhalb eines laufenden PHP-Skripts transportiert, gespeichert oder anderweitig verwendet werden . Wenn Sie eine so komplexe Datenstruktur über einen einzelnen Skriptlauf hinaus beibehalten möchten , müssen Sie sie serialisieren . Das bedeutet nur, die Struktur in einen "kleineren gemeinsamen Nenner" zu bringen, der von anderen Dingen als PHP wie Datenbanken, Textdateien und Sockets verarbeitet werden kann. Die Standard-PHP-Funktion serializeist nur ein Format , um so etwas auszudrücken. Sie serialisiert eine Datenstruktur in eine Zeichenfolgendarstellung, die nur für PHP gilt und mithilfe von in ein PHP-Objekt umgewandelt werden kann unserialize. Es gibt jedoch viele andere Formate wie JSON oder XML.
Nehmen Sie zum Beispiel dieses häufige Problem:
Wie übergebe ich ein PHP- Array an Javascript?
PHP und Javascript können nur über Strings kommunizieren. Sie können die Zeichenfolge "foo"sehr einfach an Javascript übergeben. Sie können die Nummer 1sehr einfach an Javascript übergeben. Sie können die Booleschen Werte übergeben trueund falseleicht zu Javascript. Aber wie übergeben Sie dieses Array an Javascript?
Array ( [1] => elem 1 [2] => elem 2 [3] => elem 3 )
Die Antwort lautet Serialisierung . Im Falle von PHP / Javascript ist JSON tatsächlich das bessere Serialisierungsformat:
{ 1 : 'elem 1', 2 : 'elem 2', 3 : 'elem 3' }
Javascript kann dies leicht in ein tatsächliches Javascript-Array umkehren.
Dies ist jedoch eine ebenso gültige Darstellung derselben Datenstruktur:
a:3:{i:1;s:6:"elem 1";i:2;s:6:"elem 2";i:3;s:7:" elem 3";}
Aber so ziemlich nur PHP verwendet es, es gibt nirgendwo anders Unterstützung für dieses Format.
Dies ist jedoch sehr verbreitet und wird auch gut unterstützt:
<array>
<element key='1'>elem 1</element>
<element key='2'>elem 2</element>
<element key='3'>elem 3</element>
</array>
Es gibt viele Situationen, in denen Sie komplexe Datenstrukturen als Zeichenfolgen übergeben müssen. Die Serialisierung, die beliebige Datenstrukturen als Zeichenfolgen darstellt, löst die Vorgehensweise.