PHP中的serialize和unserialize
string serialize ( mixed $value )
serialize() 返回字符串,此字符串包含了表示 value 的字节流,可以存储于任何地方。
这有利于存储或传递 PHP 的值,同时不丢失其类型和结构。
serialize返回的值结构为 type:length:value,若为integer、float,则直接返回 type:value 例:
//eg.1.string $tmp = "hello world"; echo serialize($tmp); /* 返回 "类型":"长度":"值": s:11:"hello world"; */ //eg.2.integer $integer = 19881223 ; echo serialize($integer); /* 返回 "类型":"值": i:19881223; */ //eg.3.double $double = 1988.1223 ; echo serialize($double); /* 返回 "类型":"值": d:1988.1222999999999956344254314899444580078125; */ //eg.4.array $arr = Array ( "name" => "MrAsong", "mail" => "i at mrasong dot com", "homepage" => "http://mrasong.com" ); echo serialize($arr); /* 返回 "类型":"值": a:3:{s:4:"name";s:7:"MrAsong";s:4:"mail";s:20:"i at mrasong dot com";s:8:"homepage";s:18:"http://mrasong.com";} */
unserialize() 对单一的已序列化的变量进行操作,将其转换回 PHP 的值。
返回的是转换之后的值,可为 integer、float、string、array 或 object。如果传递的字符串不可解序列化,则返回 FALSE。
例:
//eg.1.string $string = 's:11:"hello world";'; $value = unserialize($string); echo gettype($value)."\n"; print_r($value); /* 返回: string "hello world" */ //eg.2.integer $integer = 'i:19881223;'; $value = unserialize($integer); echo gettype($value)."\n"; print_r($value); /* 返回:integer 19881223 */ //eg.3.double $double = 'd:1988.1222999999999956344254314899444580078125;' ; $value = unserialize($double); echo gettype($value)."\n"; print_r($value); /* 返回:double 1988.1223 */ //eg.4.array $arr = 'a:3:{s:4:"name";s:7:"MrAsong";s:4:"mail";s:20:"i at mrasong dot com";s:8:"homepage";s:18:"http://mrasong.com";}' ; $value = unserialize($arr); echo gettype($value)."\n"; print_r($value); /* 返回: array Array ( [name] => MrAsong [mail] => i at mrasong dot com [homepage] => http://mrasong.com ) */