>백엔드 개발 >PHP 문제 >PHP 직렬화 함수의 차이점

PHP 직렬화 함수의 차이점

王林
王林원래의
2019-09-16 17:54:092099검색

PHP 직렬화 함수의 차이점

serialize() //把变量和它们的值编码成文本形式,即产生一个可存储的值的表示

자세한 설명:

serialize() 문자열을 반환합니다. 이 문자열은 값을 나타내는 바이트 스트림을 포함하며 어디에나 저장할 수 있습니다. 이를 통해 유형과 구조를 잃지 않고 PHP 값을 저장하거나 전달할 수 있습니다. serialize() 返回字符串,此字符串包含了表示 value 的字节流,可以存储于任何地方。这有利于存储或传递 PHP 的值,同时不丢失其类型和结构。

unserialize() //恢复原先变量。

详解:

unserialize() 对单一的已序列化的变量进行操作,将其转换回 PHP 的值。如果传递的字符串不可解序列化,则返回 FALSE,并产生一个 E_NOTICE

$arr=array();
$arr['name']='张三';
$arr['age']='22';
$arr['sex']='男';
$arr['phone']='123456789';
$arr['address']='上海市浦东新区';
var_dump($arr);

//输出:
//  array(5) { 
//  ["name"]=> string(6) "张三"
//  ["age"]=> string(2) "22"
//  ["sex"]=> string(3) "男"
//  ["phone"]=> string(9) "123456789"
//  ["address"]=> string(21) "上海市浦东新区"
//   }

//序列化:
$info=serialize($arr);
var_dump($info);

//输出:
//string(140) "a:5:{s:4:"name";s:6:"张三";s:3:"age";s:2:"22";s:3:"sex";s:3:"男";s:5:"phone";s:9:"123456789";s:7:"address";s:21:"上海市浦东新区";}"

   ////////////////////////说明/////////////////////////////////
//**a:5标志序列化为array包含5个键值对,s:4标志内容为字符串包含4个字符。**//


$zhangsan=unserialize($info);
var_dump($zhangsan);

//输出:
//  array(5) { 
//  ["name"]=> string(6) "张三"
//  ["age"]=> string(2) "22"
//  ["sex"]=> string(3) "男"
//  ["phone"]=> string(9) "123456789"
//  ["address"]=> string(21) "上海市浦东新区"
//   }

자세한 설명:

unserialize() 직렬화된 단일 변수에 대해 작동하고 이를 다시 PHP 값으로 변환합니다. 전달된 문자열이 역직렬화할 수 없는 경우 FALSE가 반환되고 E_NOTICE가 생성됩니다. rrreee

직렬화된 문자열을 다시 PHP 값으로 변경하려면 unserialize()를 사용할 수 있습니다. serialize()는 리소스를 제외한 모든 유형을 처리할 수 있습니다. 자신에 대한 참조가 포함된 배열을 serialize()할 수도 있습니다. 직렬화()하는 배열/객체의 참조도 저장됩니다.

객체를 직렬화할 때 PHP는 시퀀스 작업 전에 객체의 멤버 함수 __sleep()을 호출하려고 시도합니다. 이를 통해 객체가 직렬화되기 전에 모든 정리 작업을 수행할 수 있습니다. 마찬가지로, unserialize()를 사용하여 객체를 복원하면 __wakeup() 멤버 함수가 호출됩니다.

🎜위 내용은 참고용입니다! 🎜🎜🎜추천 튜토리얼: 🎜PHP 비디오 튜토리얼🎜🎜

위 내용은 PHP 직렬화 함수의 차이점의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.