1. Serialisierungs- und Deserialisierungsfunktionen
Dies sind gängige Funktionen zum Serialisieren und Deserialisieren von Daten in PHP.
$a = array('a' => 'Apple' ,'b' => 'Banane' , 'c' => 'Kokosnuss' );
//Serialisiertes Array
$s = serialize($a);
echo $s; 3:{s:1:"a";s:5:"Apfel";s:1:"b";s:6:"Banane";s:1:"c";s:7:"Kokosnuss " ;}
echo '
';
//Deserialisierung
$o = unserialize($s)
print_r($o);
//Ausgabeergebnis-Array ( [a] => Apfel [b] => Banane [c] => Kokosnuss)
?>
Wenn Array-Werte Zeichen wie doppelte Anführungszeichen, einfache Anführungszeichen oder Doppelpunkte enthalten, können nach der Deserialisierung Probleme auftreten. Um dieses Problem zu lösen, besteht ein netter Trick darin, base64_encode und base64_decode zu verwenden.
$obj = array();
//Serialisierung
$s = base64_encode(serialize($obj)>//Inverse Serialisierung
$original = unserialize(base64_decode($s));
Aber die Base64-Kodierung erhöht die Länge der Zeichenfolge. Um dieses Problem zu lösen, kann es mit gzcompress verwendet werden.
//Definieren Sie eine Funktion zum Serialisieren von Objekten
function my_serialize( $obj )
{
return base64_encode(gzcompress(serialize($ obj)) );
}
//Deserialisierung
function my_unserialize($txt)
{
return unserialize (gzuncompress(base64_decode( $txt)));
}
2. json_encode und json_decode
JSON-Format zum Serialisieren und Deserialisieren verwenden Ist eine gute Wahl:
Mit den Formaten json_encode und json_decode ist die Ausgabe viel schneller als mit dem Serialisierungs- und Deserialisierungsformat.
JSON-Format ist lesbar.
Das JSON-Format gibt kleinere Daten zurück als die Serialisierung.
Das JSON-Format ist offen und portierbar. Andere Sprachen können es ebenfalls verwenden.
$a = array('a' => 'Apfel' ,'b' => 'Banane' , 'c' => 'Kokosnuss');
// Serialisiertes Array
$s = json_encode($a);
echo $s;
//Ausgabeergebnis: {"a": "Apple", "b" :"Banane", "c": "Kokosnuss"}
echo '
'
//Deserialisierung
$o = json_decode($s);
Im obigen Beispiel ist die Ausgabelänge von json_encode offensichtlich kürzer als die Ausgabelänge von serialize im vorherigen Beispiel.
3. var_export und eval
Die Funktion var_export gibt die Variable als String aus; eval führt den String als PHP-Code aus und umgekehrt . Durch die Serialisierung wird der Inhalt der Originalvariablen abgerufen.
$a = array('a' => 'Apple' ,'b' => 'banana' , 'c' => 'Coconut');
//Serialisiertes Array
$s = var_export($a, true);
echo $s;
//Ausgabeergebnis: array ( 'a' => 'Apple', 'b' => 'banana', 'c' => ' Coconut ', )
echo '
'
//Deserialisierung
eval('$my_var=' . $s . ';');
print_r($my_var);
4. wddx_serialize_value und wddx deserialize
Die Funktion wddx_serialize_value kann Array-Variablen serialisieren und als XML-Strings ausgeben.
$a = array('a' => 'Apple' ,'b' => 'banana' , 'c' => 'Coconut');
//Serialisiertes Array
$s = wddx_serialize_value($a);
echo $s;
//Ausgabeergebnis (Quellcode der Ausgabezeichenfolge anzeigen):
echo '
';
//Deserialisierung
$o = wddx_deserialize($s);print_r($o);
//Ausgabeergebnis: Array ( [a] => Apfel [b] => Banane 1 => Kokosnuss)
Wie Sie sehen können, XML Es gibt viele Beschriftungszeichen, daher nimmt die Serialisierung dieses Formats immer noch viel Platz ein.
Zusammenfassung
Alle oben genannten Funktionen können beim Serialisieren von Array-Variablen normal ausgeführt werden, bei der Verwendung von Objekten ist dies jedoch anders. Beispielsweise schlagen serialisierte json_encode-Objekte fehl. Beim Deserialisieren eines Objekts haben Deserialisieren und Auswerten unterschiedliche Auswirkungen.