來拆解一下 serialize 之後的內容。
假設陣列如下:
<?php
$array = array(
0 => array(
'name' => 'Peter',
'age' => 26
),
1 => array(
'name' => 'John',
'age' => '23'
)
);
echo "<pre>".print_r(serialize($array),1)."</pre>";
?>
serialize()之後,得到字串:
a:2:{i:0;a:2:{s:4:"name";s:5:"Peter";s:3:"age";i:26;}i:1;a:2:{s:4:"name";s:4:"John";s:3:"age";s:2:"23";}}
解析:
a:2:{i:0;a:2:{s:4:"name";s:5:"Peter";s:3:"age";i:26;}i:1;a:2:{s:4:"name";s:4:"John";s:3:"age";s:2:"23";}}
a 代表陣列 array, 2 代表有 2 個元素。
a:2:{i:0;a:2:{s:4:"name";s:5:"Peter";s:3:"age";i:26;}i:1;a:2:{s:4:"name";s:4:"John";s:3:"age";s:2:"23";}}
i 代表索引 index,除了用來表示陣列的鍵值,數字也是用i表示。這裡的 0 表示陣列鍵值,第 1 個元素
a:2:{i:0;a:2:{s:4:"name";s:5:"Peter";s:3:"age";i:26;}i:1;a:2:{s:4:"name";s:4:"John";s:3:"age";s:2:"23";}}
s 代表字串,4 表示長度( name 是 4 個字)。
a:2:{i:0;a:2:{s:4:"name";s:5:"Peter";s:3:"age";i:26;}i:1;a:2:{s:4:"name";s:4:"John";s:3:"age";s:2:"23";}}
i 代表數字。但這跟陣列的鍵值無關,大概數字都用 i 表示。26 是數字,年齡 26。
a:2:{i:0;a:2:{s:4:"name";s:5:"Peter";s:3:"age";i:26;}i:1;a:2:{s:4:"name";s:4:"John";s:3:"age";s:2:"23";}}
23 在陣列裡面用單引號括起來,所以型值是字串,長度為 2 。
把 serialize()之後得到的字串,重新編排如下:
a:2:{
i:0;
a:2:{
s:4:"name";
s:5:"Peter";
s:3:"age";
i:26;
}
i:1;
a:2:{
s:4:"name";
s:4:"John";
s:3:"age";
s:2:"23";
}
}
沒有留言:
張貼留言