色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

php array serialize

錢艷冰1年前7瀏覽0評論

聊到php中的數組序列化操作,不得不提到PHP的序列化和反序列化函數,其中包括serialize() 和unserialize()。

Serialize() 函數是將變量序列化后獲取字符串,也就是把數組層層存儲的數據結構轉化為可存儲或可傳輸的字符串。反之,unserialize() 函數是將通過serialize()函數生成的字符串,還原為原本的數據結構。這種特殊的字符串,我們稱之為serialize字符串。

想要進一步理解,可以看看以下的例子:

$array = array('name' =>'sam', 'age' =>25, 'city' =>'Beijing');
$serStr = serialize($array);
echo $serStr;
// output: a:3:{s:4:"name";s:3:"sam";s:3:"age";i:25;s:4:"city";s:7:"Beijing";}

在代碼中,首先定義了一個關聯數組:$array,數組中有三個元素:name,age和city,接著使用serialize()函數把數組轉化為字符串,并將其打印出來。可以看到,輸出了一個非常奇怪、雜亂無章的字符串,而這就是該數組被序列化之后的結果。

那么unserialize()函數“反序列化”,對于從serialize()函數返回的字符串反推回來最初的數據結構的操作過程如下所示:

$serStr = 'a:3:{s:4:"name";s:3:"sam";s:3:"age";i:25;s:4:"city";s:7:"Beijing";}';
$array = unserialize($serStr);
print_r($array);
// output: Array ( [name] =>sam [age] =>25 [city] =>Beijing )

unserialize方法接受一個 Serialize()方法輸出的字符串輸入。理論上unserialize()函數總是成功的,或者在不符合文本格式的情況下,觸發一個E_NOTICE級別的錯誤。unserialize 函數不能創建實現的匿名類。使用 unserialize()可以安全地重新構造之前存儲的對象。

我們還可以使用數組加序列的方式傳遞參數,下面是一個實際的代碼示例:

$arr = array('first_name' =>'san',
'last_name' =>'tony',
'phone' =>array('123','456'),
'hobby' =>'music'
); 
echo serialize($arr); 
// a:4:{s:10:"first_name";s:3:"san";s:9:"last_name";s:4:"tony";s:5:"phone";a:2:{i:0;s:3:"123";i:1;s:3:"456";}s:5:"hobby";s:5:"music";}

在這個代碼段中,我們定義了一個關聯數組 $arr,數組中包含三個鍵值對。 注意數組中第三行的鍵 phone 其實是包含了兩個值的數組,這個數組通過 serialize() 函數序列化后,可以看到輸出的字符串中,有 a:2 表示數組中包含兩個元素。

序列化是一個非常有用的特性,常用于緩存存儲,網絡傳輸等操作。然而,在一些場景下需要注意數組中的值的種類,可序列化數據類型包括: boolean,integer,float,string,array,object 和 NULL。傳遞給 unserialize 函數的字符串,應該不允許來自未受信任的源,以避免被植入惡意的處理程序。這個函數的使用最好規避掉來自未知和不可信的源。

以上是PHP中序列化操作的相關介紹,希望能對你有所幫助!