Rumah pembangunan bahagian belakang tutorial php PHP对变量进行序列化和反序列化的方法

PHP对变量进行序列化和反序列化的方法

Jun 20, 2016 pm 01:04 PM
pembolehubah php

序列化是将变量转换为可保存或传输的字符串的过程;反序列化就是在适当的时候把这个字符串再转化成原来的变量使用。

这两个过程结合起来,可以轻松地存储和传输数据,使程序更具维护性。

1. serialize和unserialize函数,这两个是序列化和反序列化PHP中数据的常用函数。

$a=array('a'=>'Apple','b'=>'banana','c'=>'Coconut');

//序列化数组
$s=serialize($a);
echo $s;
//输出结果:a:3:{s:1:"a";s:5:"Apple";s:1:"b";s:6:"banana";s:1:"c";s:7:"Coconut";}

//反序列化
$o=unserialize($s);
print_r($o);

//输出结果:

array('a'=>'Apple','b'=>'banana','c'=>'Coconut')

但是当数组值包含如双引号、单引号或冒号等字符时,它们被反序列化后,可能会出现问题。

为了克服这个问题,一个巧妙的技巧是使用base64_encode和base64_decode函数。

$obj=array();

//序列化
$s=base64_encode(serialize($obj));
//反序列化

$original=unserialize(base64_decode($s)); 这样也并不是一个非常完美的解决办法,因为base64编码将增加字符串的长度。为了克服这个问题,可以和gzcompress一起使用,如下。

//定义一个用来序列化对象的函数

function my_serialize($obj){
return base64_encode(gzcompress(serialize($obj)));
}

//反序列化
function my_unserialize($txt){
return unserialize(gzuncompress(base64_decode($txt)));

2. 使用JSON格式序列化和反序列化是一个不错的选择,即 json_encode 和 json_decode使用json_encode和json_decode格式输出要serialize和unserialize格式快的多。

JSON格式是可读的,它比serialize返回数据结果小。而且JSON格式是开放的、可移植的。其他语言也可以使用它,具体使用案例如下:

$a=array('a'=>'Apple','b'=>'banana','c'=>'Coconut');

//序列化数组
$s=json_encode($a);
echo $s;
//输出结果:{"a":"Apple","b":"banana","c":"Coconut"}

//反序列化

$o=json_decode($s); 在上面的例子中,json_encode 输出长度比上个例子中 serialize 输出长度显然要短。

3. var_export 和 eval 方法,var_export 函数把变量作为一个字符串输出;eval把字符串当成PHP代码来执行,反序列化得到最初变量的内容。

$a=array('a'=>'Apple','b'=>'banana','c'=>'Coconut');

//序列化数组
$s=var_export($a,true);
echo $s;
//输出结果:array('a'=>'Apple','b'=>'banana','c'=>'Coconut')

//反序列化
eval('$my_var='.$s.';');

print_r($my_var); 

4. wddx_serialize_value 和 wddx deserialize 方法,wddx_serialize_value 函数可以序列化数组变量,并以XML字符串形式输出。

$a=array('a'=>'Apple','b'=>'banana','c'=>'Coconut');

//序列化数组
$s=wddx_serialize_value($a);
echo $s;
//输出结果(查看输出字符串的源码):ApplebananaCoconut

//反序列化
$o=wddx_deserialize($s);
print_r($o);

//输出结果:Array([a]=>Apple[b]=>banana 1=>Coconut)

可以看出,XML标签字符较多,导致这种格式的序列化还是占了很多空间。

结论:上述所有的函数在序列化数组变量时都能正常执行,但运用到对象就不同了。

例如json_encode序列化对象就会失败。反序列化对象时,unserialize和eval将有不同的效果。


Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Notis PHP: Pembolehubah tidak ditentukan:Penyelesaian Notis PHP: Pembolehubah tidak ditentukan:Penyelesaian Jun 25, 2023 pm 04:18 PM

Dalam pembangunan PHP, kita sering menemui mesej ralat PHPNotice:Undefinedvariable. Mesej ralat ini bermakna kami telah menggunakan pembolehubah yang tidak ditentukan dalam kod. Walaupun mesej ralat ini tidak akan menyebabkan kod ranap, ia akan menjejaskan kebolehbacaan dan kebolehselenggaraan kod. Di bawah, artikel ini akan memperkenalkan anda kepada beberapa kaedah untuk menyelesaikan ralat ini. 1. Gunakan fungsi error_reporting(E_ALL) semasa proses pembangunan Dalam pembangunan PHP, kita boleh

Notis PHP: Pembolehubah tidak ditentukan: arr dalam penyelesaian Notis PHP: Pembolehubah tidak ditentukan: arr dalam penyelesaian Jun 22, 2023 am 10:21 AM

Penyelesaian kepada PHPNotice:Undefinedvariable:arrin Dalam pengaturcaraan PHP, kita sering menemui mesej ralat "Notis:Undefinedvariable". Mesej ralat ini biasanya disebabkan oleh mengakses pembolehubah yang tidak ditentukan atau pembolehubah itu belum dimulakan. Untuk masalah ini, kita perlu mencari masalah dan menyelesaikannya dalam masa. Dalam artikel ini, kami akan menumpukan pada PHPNotice:Undefin

Cara menggunakan pembolehubah berangka dalam PHP Cara menggunakan pembolehubah berangka dalam PHP Sep 13, 2023 pm 12:46 PM

Cara menggunakan pembolehubah berangka dalam PHP Dalam PHP, pembolehubah berangka ialah jenis pembolehubah yang digunakan secara langsung tanpa pengisytiharan. Anda boleh menggunakan pembolehubah berangka untuk melakukan pengiraan matematik, perbandingan data dan operasi berangka lain. Artikel ini akan menerangkan cara menggunakan pembolehubah berangka dalam PHP dan memberikan contoh kod khusus. Mentakrifkan pembolehubah berangka Dalam PHP, mentakrifkan pembolehubah berangka adalah sangat mudah, hanya berikan nombor terus kepada pembolehubah. Berikut ialah contoh: $number=10; Dalam kod di atas, kami mentakrifkan nilai yang dipanggil $numb

Bagaimana dengan cepat menghapuskan ralat tidak ditentukan pembolehubah PHP? Bagaimana dengan cepat menghapuskan ralat tidak ditentukan pembolehubah PHP? Dec 17, 2023 am 10:23 AM

Bagaimana dengan cepat menghapuskan ralat tidak ditentukan pembolehubah PHP? Dalam pembangunan PHP, kita sering menghadapi ralat pembolehubah yang tidak ditentukan. Ini kerana pembolehubah yang tidak ditetapkan digunakan dalam kod. Apabila menghadapi ralat seperti ini, kita perlu cepat mencari punca ralat dan menyelesaikannya. Berikut ialah beberapa cara untuk menyelesaikan masalah pembolehubah PHP ralat tidak ditentukan dengan cepat untuk membantu anda mencari dan membetulkan ralat dengan lebih cepat. Hidupkan pelaporan ralat: Apabila kami menghidupkan pelaporan ralat, PHP akan memaparkan semua ralat dan mesej amaran, termasuk ralat tidak ditentukan yang berubah-ubah. Kita boleh melakukan ini dengan membuka kod

Notis PHP: Pembolehubah tidak ditentukan: penyelesaian sql Notis PHP: Pembolehubah tidak ditentukan: penyelesaian sql Jun 23, 2023 am 08:51 AM

Semasa membangunkan aplikasi PHP, jika anda menemui gesaan "Pembolehubah tidak ditentukan: sql", ini biasanya bermakna anda merujuk pembolehubah yang tidak ditentukan. Ini boleh disebabkan oleh banyak sebab, seperti salah ejaan nama pembolehubah, isu skop atau ralat sintaks dalam kod, dsb. Dalam artikel ini, kami akan meneroka pelbagai punca masalah ini dan menyediakan beberapa cara untuk menyelesaikannya. 1. Nama pembolehubah tersalah eja Dalam kod PHP anda, jika nama pembolehubah tidak betul atau salah eja, sistem

Bagaimana untuk lulus pembolehubah PHP dengan rujukan Bagaimana untuk lulus pembolehubah PHP dengan rujukan Aug 26, 2023 am 09:01 AM

Dalam PHP, anda boleh menggunakan simbol ampersand (&) untuk menghantar pembolehubah melalui rujukan dan bukannya mengikut nilai. Ini membolehkan pembolehubah asal diubah suai dalam fungsi atau kaedah. Terdapat dua cara untuk menghantar pembolehubah PHP dengan rujukan: Menggunakan simbol ampersand Menggunakan simbol ampersand dalam fungsi/pengisytiharan kaedah Menggunakan simbol ampersand dalam pengisytiharan fungsi/kaedah Apabila menghantar pembolehubah kepada fungsi/kaedah Dalam PHP, anda boleh menggunakan fungsi/ Simbol ampersand ( &) dalam pengisytiharan kaedah melepasi pembolehubah melalui rujukan. Berikut ialah penjelasan yang dikemas kini: Untuk menghantar pembolehubah rujukan dengan menggunakan simbol & dalam pengisytiharan fungsi/kaedah, anda perlu memasukkan simbol & sebelum nama parameter dalam definisi fungsi/kaedah. Ini menunjukkan bahawa parameter harus diluluskan dengan rujukan, membenarkan

Penyelesaian kepada Notis PHP: Pembolehubah tidak ditentukan: hasil Penyelesaian kepada Notis PHP: Pembolehubah tidak ditentukan: hasil Jun 22, 2023 pm 01:32 PM

PHPNotice:Undefinedvariable:result bermaksud hasil pembolehubah yang tidak ditentukan dipanggil dalam program PHP, yang akan menyebabkan program menjana amaran peringkat Notis. Keadaan ini biasanya disebabkan oleh pengaturcara yang tidak mentakrifkan pembolehubah atau skop pembolehubah dengan betul semasa menulis kod PHP. Jika tidak diselesaikan tepat pada masanya, amaran tahap Notis ini boleh menyebabkan masalah dalam pengendalian program. Jadi, bagaimana untuk menyelesaikan PHPNotice:

Apakah pembolehubah biasa dalam pengaturcaraan PHP? Apakah pembolehubah biasa dalam pengaturcaraan PHP? Jun 12, 2023 am 10:06 AM

Dalam pengaturcaraan PHP, pembolehubah adalah unit asas untuk menyimpan nilai dan digunakan untuk menyimpan dan menggunakan data semasa pelaksanaan program. Dalam PHP, pembolehubah boleh diberikan jenis data yang berbeza, termasuk integer, titik terapung, rentetan, tatasusunan, dll. Dalam artikel ini, kami akan memperkenalkan pembolehubah biasa dan penggunaannya dalam pengaturcaraan PHP. Pembolehubah mudah ialah jenis pembolehubah yang paling biasa Ia boleh menyimpan jenis data biasa seperti integer, nombor titik terapung dan rentetan. Dalam PHP, nilai awal pembolehubah tidak ditentukan ialah NULL. Berikut ialah beberapa contoh: Pembolehubah integer: $

See all articles