[TOC]
## 概念
`serialize()` 函數將PHP值轉為 一個包含字節流的字符串
`unserialize()` 函數將字節流的字符串變回php原來的值
## 實踐
### PHP數組
```
<?php
$arr = [];
$arr['key'] = 'website';
$arr['value'] = 'www.baidu.com';
print_r($arr);
```
返回數組:
```
Array
(
[key] => website
[value] => www.baidu.com
)
```
### serialize() 序列化為字符串
```
<?php
$arr = [];
$arr['key'] = 'website';
$arr['value'] = 'www.baidu.com';
$a = serialize($arr);
echo $a;
```
返回數組:
```
a:2:{s:3:"key";s:7:"website";s:5:"value";s:13:"www.baidu.com";}
```
### unserialize() 反序列化為數組
```
$b = 'a:2:{s:3:"key";s:7:"website";s:5:"value";s:13:"www.baidu.com";}';
$c = unserialize($b);
print_r($c);
```
返回值 :
```
Array
(
[key] => website
[value] => www.baidu.com
)
```
## 對序列化字符串的說明
```
a:2:{s:3:"key";s:7:"website";s:5:"value";s:13:"www.baidu.com";}
```
對此我們可以將其分開
```
a:2:{}
s:3:"key"
s:7:"website"
s:5:"value"
s:13:"website"
```
從上我們可以看出,
1. `a` 代表 `array`數組,`2`代表數組長度,`{}` 很明顯就是包含數組的內容
2. `s` 代表 `字符串`,`3`代表字符串的長度,`key`代表字符串
## 總結
```
a:2:{}
s:3:"key"
```
(字符串用分號隔開)
## 進階
1、可序列化對象


2、可序列化字符串

