Somit dann auch der falsche Wert in der Datenbank.
Daher muss ein Array vor dem Speichern immer erst mit implode als String umgewandelt werden.
Mit explode wird dann nach dem Auslesen der Daten aus dem Speicher dieses wieder in ein Array zurückgeführt.
Das klappt allerdings nur mit eindimensionalen Arrays, also z. B.
Code: Alles auswählen
$value = array(1 => 'Data');
Code: Alles auswählen
$value = array(1 => array('Value1' => 'Data1'));
In diesen Fälllen ist serialize die eindeutig bessere Wahl.
Diese Funktion verwandelt alle möglichen Daten (und Formate) in einen speicherbaren Wert und dieser kann dann mit unserialize wieder bequem in die ursprüngliche Form zurückgeführt werden (also z. B. nach dem Auslesen aus der Datenbank).
Allerdings gilt dabei zu beachten, dass der String, der mit serialize erstellt wird, länger ist, als der String, den implode erzeugt, sollte also ein mögliches implode nicht zwangsweise ersetzen.
serialize nimmt man meist auch eher für das Speichern von Werten in Dateien, z. B. für einen Cache.
Und noch ein Unterschied: serialize und unserialize benötigen ggf. eine Menge Speicher zum arbeiten.
Der steht auch nicht immer zur Verfügung.
Der Vorteil von serialize ist aber, dass man die Struktur der Daten auf keinen Fall verliert und ohne vorher irgend etwas konvertieren zu müssen die Daten speichern und später weiter verwenden kann.
Und gerade bei komplexeren Arrays ist das sehr von Vorteil.
Merke:
Eindimensionale Arrays mit implode nach festen Regeln oder mit serialize zum Speichern vorbereiten, mehrdimensionale Arrays lassen sich dagegen nur sinnvoll mit serialize zum Speichern aufbereiten.