PHPのシリアル化にはどのような方法があるのでしょうか?
PHP シリアル化方法: 1. Serialize() 関数、構文「serialize(value)」を使用します; 2. Base64_encode() 関数を使用します; 3. var_export() 関数を使用します; 4. wddx_serialize_value を使用します() 関数。
このチュートリアルの動作環境: Windows 7 システム、PHP 7.1 バージョン、DELL G3 コンピューター
シナリオ:
Cookie は複合フォーム データを格納できないため、多次元配列をシリアル化して Cookie に格納する必要がありますが、PHP のバージョンが低すぎる (5.2) ため、json_encode
はサポートされていません解決策 (シリアル化と逆シリアル化):
1、関数のシリアル化とシリアル化解除: 1 次元配列のみをサポートします。オブジェクト、json_encode はオブジェクトをサポートしません
PHP のすべての値は、serialize() 関数 (シリアル化) を使用して保存できる文字列に変換できます。 unserialize() 関数は、文字列を PHP の元の値に戻すことができます。これは逆シリアル化です。
オブジェクトを例に挙げると、オブジェクトをシリアル化すると、オブジェクトのすべての変数が保存されますが、オブジェクトのメソッドは保存されず、クラスの名前のみが保存されます。さらに、オブジェクトを逆シリアル化できるようにするには、オブジェクトのクラスが定義されている必要があります。クラス A のオブジェクトをシリアル化すると、オブジェクト内のすべての変数の値を含むクラス A に関連する文字列が返されます。
別のファイル内のオブジェクトを逆シリアル化する場合は、逆シリアル化の前にオブジェクトのクラスを定義する必要があります。これは、クラスを定義するファイルをインクルードするか、関数 spl_autoload_register() を使用することで実現できます。
serialize() 関数の構文形式は次のとおりです。
serialize(mixed $value)
$value はシリアル化する変数です。
serialize() 関数は、リソースを除く任意の型を処理できます。オブジェクトをシリアル化するとき、PHP はシーケンス アクションの前にオブジェクトの __sleep() メンバー関数を呼び出します。これにより、オブジェクトがシリアル化される前にクリーンアップ操作を実行できるようになります。同様に、unserialize() を使用してオブジェクトが逆シリアル化されると、__wakeup() メンバー関数が呼び出されます。
serialize() 関数を使用してオブジェクトをシリアル化した後、取得した文字列をファイルまたはデータベースに保存し、必要に応じて unserialize() 関数を使用して文字列を反転できます。
2、base64_encode とbase64_decode、同じ問題です。多次元はサポートされていません。base64 エンコードを使用すると、文字列の長さが長くなります。この問題を解決するには、gzcompress:
function my_serialize( $obj ) { return base64_encode(gzcompress(serialize($obj))); } //反序列化 function my_unserialize($txt) { return unserialize(gzuncompress(base64_decode($txt))); }
3 とともに使用できます。var_export と eval
$look_books = array($aid => array($cid => array('article_name' => $article->articlename, 'chapter_name' => $chapter->chaptername))) + $look_books; $look_books = var_export($look_books, true); setcookie('look_books', $look_books, $cookieTime, '/', '.dym.com');
は多次元配列をサポートしていますが、注意する必要があります。一重引用符と二重引用符はエスケープされます。文字により eval が失敗するため、エスケープ文字を削除する必要があります
stripcslashes() 即可。
4. wddx_serialize_value と wddx deserialize
$a = array('a' => 'Apple' ,'b' => 'banana' , 'c' => 'Coconut'); //序列化数组 $s = wddx_serialize_value($a); echo $s; //输出结果(查看输出字符串的源码):<wddxPacket version='1.0'><header/><data><struct><var name='a'><string>Apple</string></var><var name='b'><string>banana</string></var><var name='c'><string>Coconut</string></var></struct></data></wddxPacket> echo '<br /><br />'; //反序列化 $o = wddx_deserialize($s); print_r($o); //输出结果:Array ( [a] => Apple [b] => banana 1 => Coconut )
Inこの方法では、XML ラベル自体が多くの文字を占有し、比較的メモリを消費します。
推奨学習: 「PHP ビデオ チュートリアル 」
以上がPHPのシリアル化にはどのような方法があるのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック

PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

CakePHP でデータベースを操作するのは非常に簡単です。この章では、CRUD (作成、読み取り、更新、削除) 操作について理解します。

ファイルのアップロードを行うには、フォーム ヘルパーを使用します。ここではファイルアップロードの例を示します。

CakePHP は、PHP 用のオープンソース フレームワークです。これは、アプリケーションの開発、展開、保守をより簡単にすることを目的としています。 CakePHP は、強力かつ理解しやすい MVC のようなアーキテクチャに基づいています。モデル、ビュー、コントローラー
