Mein Problem ist sehr einfach.
Ich habe kein Beispiel gefunden, um meine Bedürfnisse zu erfüllen, was genau serialize()
und was unserialize()
in PHP bedeutet. Sie geben nur ein Beispiel - serialisieren Sie ein Array und zeigen Sie eine Ausgabe in einem ungeklärten Format. Es ist wirklich schwer, das Grundkonzept zu verstehen, das durch ihren Jargon geht.
BEARBEITEN:
<?php
$a= array( '1' => 'elem 1', '2'=> 'elem 2', '3'=>' elem 3');
print_r($a);
echo ("<br></br>");
$b=serialize($a);
print_r($b);
?>
Ausgabe:
Array ( [1] => elem 1 [2] => elem 2 [3] => elem 3 )
a:3:{i:1;s:6:"elem 1";i:2;s:6:"elem 2";i:3;s:7:" elem 3";}
Ich kann die zweite Ausgabe nicht verstehen. Kann jemand ein Beispiel für eine Situation geben, in der ich ein PHP-Array serialisieren muss, bevor ich es verwende?
Antworten:
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
serialize
ist 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 kannunserialize
. 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 Nummer1
sehr einfach an Javascript übergeben. Sie können die Booleschen Werte übergebentrue
undfalse
leicht zu Javascript. Aber wie übergeben Sie dieses Array an Javascript?Die Antwort lautet Serialisierung . Im Falle von PHP / Javascript ist JSON tatsächlich das bessere Serialisierungsformat:
Javascript kann dies leicht in ein tatsächliches Javascript-Array umkehren.
Dies ist jedoch eine ebenso gültige Darstellung derselben Datenstruktur:
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:
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.
quelle
i:1
= Ganzzahl 1,s:6:"elem 1"
= Zeichenfolge mit 6 Zeichen "elem 1" ... Und nach welchem Beispiel fragst du, ich dachte, ich hätte eines gegeben?echo json_encode($array);
Wie genau Sie passieren sie von den Umständen abhängt. Lass dich nicht zu sehr darauf ein.PHP serialize () unserialize () Verwendung
http://freeonlinetools24.com/serialize
Welches gibt Ihnen eine Ausgabe so etwas
Wenn Sie das ursprüngliche Array wiederherstellen möchten, verwenden Sie einfach die Funktion PHP unserialize ()
Ich hoffe das wird helfen
quelle
Wenn Sie Ihren PHP-Wert speicherbar machen möchten, müssen Sie ihn in einen String-Wert umwandeln, genau wie serialize () . Und unserialize () macht das Gegenteil.
quelle
serialize()
undunserialize()
ist gemacht für.Führen Sie dieses Programm aus, um die Ausgabe wiederzugeben
hier
a = Größe des Arrays
i = Anzahl der Array-Nummern
s = Größe der Array-Werte
Sie können serialize verwenden, um ein Array von Daten in der Datenbank zu speichern,
und Daten zur Verwendung abrufen und UN-serialisieren.
quelle
Die meisten Speichermedien können Zeichenfolgentypen speichern . Sie können eine PHP-Datenstruktur wie ein Array oder ein Objekt nicht direkt speichern und sollten dies auch nicht, da dies das Datenspeichermedium mit PHP koppeln würde.
serialize()
Ermöglicht es Ihnen stattdessen, eine dieser Strukturen als Zeichenfolge zu speichern. Es kann von seiner Zeichenfolgendarstellung mit de-serialisiert werdenunserialize()
.Wenn Sie mit
json_encode()
undjson_decode()
(und JSON im Allgemeinen) vertraut sind , ist das Konzept ähnlich.quelle
serialize()
vor JSON.Bitte! Bitte! Bitte! Serialisieren Sie KEINE Daten und platzieren Sie sie in Ihrer Datenbank. Serialize kann auf diese Weise verwendet werden, aber es fehlen der Punkt einer relationalen Datenbank und die Datentypen, die Ihrem Datenbankmodul inhärent sind. Dadurch werden Daten in Ihrer Datenbank nicht portierbar, schwer lesbar und können Abfragen erschweren. Wenn Sie möchten, dass Ihre Anwendung auf andere Sprachen portierbar ist, z. B. wenn Sie feststellen, dass Sie Java für einen Teil Ihrer App verwenden möchten, in dem die Verwendung von Java sinnvoll ist, wird die Serialisierung zu einem Problem für das Gesäß. Sie sollten immer in der Lage sein, Daten in der Datenbank abzufragen und zu ändern, ohne ein Vermittlungstool eines Drittanbieters zum Bearbeiten der einzufügenden Daten zu verwenden.
Es macht es wirklich schwierig, Code, Code mit Portabilitätsproblemen und Daten zu verwalten, bei denen die Migration auf andere RDMS-Systeme, neue Schemata usw. schwieriger ist. Außerdem hat es den zusätzlichen Nachteil, dass die Suche in Ihrer Datenbank anhand eines der folgenden Probleme unübersichtlich wird die Felder, die Sie serialisiert haben.
Das heißt nicht, dass serialize () nutzlos ist. Es ist nicht ... Ein guter Ort, um es zu verwenden, kann eine Cache-Datei sein, die beispielsweise das Ergebnis einer datenintensiven Operation enthält. Es gibt Unmengen anderer ... Missbrauche Serialisierung nur nicht, weil der nächste Typ, der mitkommt, einen Wartungs- oder Migrationsalptraum hat.
Ein gutes Beispiel für serialize () und unserialize () könnte folgendermaßen aussehen:
Unserialize auf der Seite
quelle
Von http://php.net/manual/en/function.serialize.php :
Im Wesentlichen nimmt es ein PHP-Array oder -Objekt und konvertiert es in eine Zeichenfolge (die Sie dann nach Belieben übertragen oder speichern können).
Mit Unserialize wird die Zeichenfolge wieder in ein Objekt konvertiert.
quelle
Wenn Sie Arrays oder Objekte serialisieren, wandeln Sie sie einfach in ein gültiges Zeichenfolgenformat um, damit Sie sie problemlos außerhalb des PHP-Skripts speichern können.
Hinweis für Objekte: Verwenden Sie die Methoden Magic __sleep und __wakeup. __sleep wird von serialize () aufgerufen. Eine Sleep-Methode gibt ein Array der Werte des Objekts zurück, das Sie beibehalten möchten.
__wakeup wird von unserialize () aufgerufen. Eine Aufweckmethode sollte die unserialisierten Werte nehmen und sie im Objekt initialisieren.
Zum Übergeben von Daten zwischen PHP und JS würden Sie Json_encode verwenden, um das PHP-Array in ein gültiges JSON-Format zu verwandeln. Oder umgekehrt: Verwenden Sie JSON.parese (), um Ausgabedaten (Zeichenfolgen) in gültige JSON-Objekte zu konvertieren. Sie möchten dies tun, um den lokalen Speicher zu nutzen. (Offline-Datenzugriff)
quelle
Ja, ich kann. Angenommen, wir müssen Ihre Systemmittel nachverfolgen. In Ihrem System gibt es mehr als einen Administrator und einen Subadmin. Alle diese Informationen können Informationen einfügen, aktualisieren oder bearbeiten. Später müssen Sie wissen, wer diese Änderung vornimmt. Um dieses Problem zu lösen, müssen Sie serialisieren.
Ich hoffe, dies wird dir helfen.
quelle
quelle