PHP のシリアル化 (シリアル化) と逆シリアル化

WBOY
リリース: 2016-06-13 12:54:44
オリジナル
962 人が閲覧しました

PHPのシリアル化(シリアル化)と逆シリアル化

これはJavaのシリアル化と同じです。 Java が空のインターフェイス Serializable を実装する必要があるだけです。


serialize() は、変数とその値をテキスト形式
にエンコードします。

unserialize() 元の変数
を復元します

什么情况下需要序列化 
当你想把的内存中的对象写入到硬盘 数据库的时候;
当你想在网络上传送对象的时候;
ログイン後にコピー

これらのシリアル化されたデータが URL に配置され、ページ間で渡される場合、データ内の URL メタ文字が確実に処理されるように、データに対して urlencode() を呼び出す必要があります。

margic_quotes_gpc および magic_quotes_runtime 構成項目の設定は、unserialize() に渡されるデータに影響します。
magic_quotes_gpc オプションが有効な場合、URL、POST 変数、および Cookie で渡されたデータは、逆シリアル化の前に、stripslashes() で処理する必要があります: magic_quotes_runtime が有効な場合、シリアル化されたデータは、ファイルに書き込む前にaddslashes() で処理し、読み取る前にstripslashes() で処理する必要があります:


配列を使用して配列オブジェクトをシリアル化することもできます。

<?php
	class Data{
		var $index;
		var $name;
		
		function __construct($index,$name){
			$this->index = $index;
			$this->name = $name;
		}
	}
	
	$data1 = new Data(1, "hello");
	$data2 = new Data(2, "world");
	$arr = array();
	//用ArrayObject也可以。
	//$arr = new ArrayObject();
	$arr[0] = $data1;
	$arr[1] = $data2;
	$str = serialize($arr);

	
	$file = fopen("tmp.txt", "w");
	fwrite($file, $str);
	fclose($file);

	//$file =fopen("tmp.txt", "r");
	$data = file_get_contents("tmp.txt");
	
	//反序列化得到原来的数组对象。
	$obj = unserialize($data);
	print_r($obj[0]);
	echo $obj[0]->name;
	
?>
ログイン後にコピー
tmp.txt の内容は次のとおりです:

a:2:{i:0;O:4:"Data":2:{s:5:"index";i:1;s:4:"name";s:5:"hello";}i:1;O:4:"Data":2:{s:5:"index";i:2;s:4:"name";s:5:"world";}}
ログイン後にコピー


関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート