Mon problème est très basique.
Je n'ai trouvé aucun exemple pour répondre à mes besoins quant à ce que signifie exactement serialize()
et unserialize()
en php? Ils donnent juste un exemple - sérialiser un tableau et afficher une sortie dans un format inexpliqué. Il est vraiment difficile de comprendre le concept de base à travers leur jargon.
ÉDITER:
<?php
$a= array( '1' => 'elem 1', '2'=> 'elem 2', '3'=>' elem 3');
print_r($a);
echo ("<br></br>");
$b=serialize($a);
print_r($b);
?>
production:
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";}
Je ne comprends pas la deuxième sortie. En plus de cela, quelqu'un peut-il donner un exemple de situation dans laquelle j'ai besoin de sérialiser un tableau php avant de l'utiliser?
Réponses:
Un tableau ou un objet PHP ou une autre structure de données complexe peut pas être transporté, stocké ou utilisé d'une autre manière en dehors d'un script PHP en cours d'exécution . Si vous souhaitez conserver une structure de données aussi complexe au-delà d'une seule exécution d'un script, vous devez sérialiser . Cela signifie simplement mettre la structure dans un "plus petit dénominateur commun" qui peut être géré par des choses autres que PHP, comme les bases de données, les fichiers texte, les sockets. La fonction PHP standard
serialize
est juste un format pour exprimer une telle chose, elle sérialise une structure de données en une représentation sous forme de chaîne qui est unique à PHP et peut être inversée en un objet PHP en utilisantunserialize
. Il existe cependant de nombreux autres formats, comme JSON ou XML.Prenons par exemple ce problème courant:
Comment passer un tableau PHP à Javascript?
PHP et Javascript ne peuvent communiquer que via des chaînes. Vous pouvez passer la chaîne
"foo"
très facilement à Javascript. Vous pouvez passer le numéro1
très facilement à Javascript. Vous pouvez passer les valeurs booléennestrue
etfalse
facilement à Javascript. Mais comment passer ce tableau à Javascript?La réponse est la sérialisation . Dans le cas de PHP / Javascript, JSON est en fait le meilleur format de sérialisation:
Javascript peut facilement inverser cela dans un tableau Javascript réel.
Ceci est tout aussi valide une représentation de la même structure de données:
Mais à peu près seul PHP l'utilise, il y a peu de support pour ce format ailleurs.
Ceci est très courant et bien pris en charge également:
Il existe de nombreuses situations dans lesquelles vous devez transmettre des structures de données complexes sous forme de chaînes. La sérialisation, qui représente des structures de données arbitraires sous forme de chaînes, résout comment procéder.
la source
i:1
= entier 1,s:6:"elem 1"
= chaîne de 6 caractères "elem 1" ... Et quel exemple demandez-vous, je pensais en avoir donné un?echo json_encode($array);
La façon dont vous réussissez exactement dépend des circonstances. Ne soyez pas trop accro à cela.Utilisation de PHP serialize () unserialize ()
http://freeonlinetools24.com/serialize
Ce qui vous donne une sortie quelque chose comme ça
encore une fois si vous voulez récupérer le tableau d'origine, utilisez simplement la fonction PHP unserialize ()
J'espère que cela aidera
la source
Lorsque vous voulez rendre votre valeur php stockable, vous devez la transformer en valeur de chaîne, c'est ce que fait serialize () . Et unserialize () fait la chose inverse.
la source
serialize()
etunserialize()
sont faits pour.Exécutez ce programme pour faire écho à la sortie
ici
a = taille du tableau
i = nombre du nombre de tableaux
s = taille des valeurs du tableau
vous pouvez utiliser sérialiser pour stocker un tableau de données dans la base de données
et récupérer et UN-sérialiser les données à utiliser.
la source
La plupart des supports de stockage peuvent stocker des types de chaîne . Ils ne peuvent pas stocker directement une structure de données PHP telle qu'un tableau ou un objet, et ils ne le devraient pas, car cela couplerait le support de stockage de données avec PHP.
Au lieu de cela,
serialize()
vous permet de stocker l'une de ces structures sous forme de chaîne. Il peut être désérialisé de sa représentation sous forme de chaîne avecunserialize()
.Si vous connaissez
json_encode()
etjson_decode()
(et JSON en général), le concept est similaire.la source
serialize()
est antérieur à JSON.S'il vous plaît! S'il vous plaît! S'il vous plaît! NE PAS sérialiser les données et les placer dans votre base de données. Serialize peut être utilisé de cette façon, mais il manque le point d'une base de données relationnelle et les types de données inhérents à votre moteur de base de données. Cela rend les données de votre base de données non portables, difficiles à lire et peut compliquer les requêtes. Si vous voulez que votre application soit portable dans d'autres langages, comme disons que vous trouvez que vous souhaitez utiliser Java pour une partie de votre application dans laquelle il est logique d'utiliser Java, la sérialisation deviendra une douleur dans les fesses. Vous devez toujours être en mesure d'interroger et de modifier les données de la base de données sans utiliser un outil intermédiaire tiers pour manipuler les données à insérer.
il est vraiment difficile de maintenir le code, le code avec des problèmes de portabilité et les données qu'il est plus difficile de migrer vers d'autres systèmes RDMS, un nouveau schéma, etc. les champs que vous avez sérialisés.
Cela ne veut pas dire que serialize () est inutile. Ce n'est pas ... Un bon endroit pour l'utiliser peut être un fichier cache contenant le résultat d'une opération intensive en données, par exemple. Il y en a des tonnes d'autres ... N'abusez pas de la sérialisation, car le prochain venu aura un cauchemar de maintenance ou de migration.
Un bon exemple de serialize () et unserialize () pourrait être comme ceci:
Désérialiser sur la page
la source
Depuis http://php.net/manual/en/function.serialize.php :
Essentiellement, il prend un tableau ou un objet php et le convertit en une chaîne (que vous pouvez ensuite transmettre ou stocker comme bon vous semble).
Unserialize est utilisé pour reconvertir la chaîne en objet.
la source
Fondamentalement, lorsque vous sérialisez des tableaux ou des objets, vous les transformez simplement en un format de chaîne valide afin de pouvoir les stocker facilement en dehors du script php.
Remarque pour l'objet, vous devez utiliser les méthodes magiques __sleep et __wakeup. __sleep est appelé par serialize (). Une méthode sleep renverra un tableau des valeurs de l'objet que vous souhaitez conserver.
__wakeup est appelé par unserialize (). Une méthode de réveil doit prendre les valeurs non sérialisées et les initialiser dans elles dans l'objet.
Pour passer des données entre php et js, vous utiliseriez json_encode pour transformer le tableau php au format json valide. Ou autre manière - utilisez JSON.parese () pour convertir une donnée de sortie (chaîne) en objet json valide. Vous voudriez faire cela pour utiliser le stockage local. (accès aux données hors ligne)
la source
Oui je peux. Supposons que nous ayons besoin de suivre votre système signifie que votre système a plus d'un administrateur et sous-administrateur, Tous ces éléments peuvent insérer, mettre à jour ou modifier des informations.Plus tard, vous devez savoir qui effectue cette modification. Pour résoudre ce problème, vous devez sérialiser.
J'espère que cela t'aidera.
la source
la source