在PHP中使用serialize()序列化数据是非常便捷的。serialize()返回一个字符串,此字符串包含了表示数据的字节流。使用serialize()产生的这个字符串可以存储于任何地方,同时不会丢失其数据类型和结构,这有利于存储或传递PHP的值。
为汝城等地区用户提供了全套网页设计制作服务,及汝城网站建设行业解决方案。主营业务为网站制作、成都网站建设、汝城网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!
serialize()可以处理除resource之外的任何类型,甚至可以处理那些包含了指向其自身引用的数组。数组/对象中的引用也将被存储,并且自PHP4版本以后可以同时存储对象的属性和方法(PHP3只能存储对象的属性)。
但是在使用serialize()的时候一定要注意对其内容先进行addslashes()处理,否则序列化的数据中如果有特殊字符就会导致字符串无法使用unserialize()进行反序列化。
最简单的方法是设置x为长度为10的字符串,每一位对应一个选项,例如'1110000000'表示前3项选中、后7项没选,再如'1010101010'表示奇数项选中、偶数项未选择。
保存到数据库之前可以用下面的语句编码:
$x='';
for ($i=0;$i10;$i++)
if ($num[$i]==1) $x.='1';
else $x.='0';
数据库获取数据后,用下面的语句分到数组里面:
for ($i=0;$i10;$i++) $num[$i]=substr($x,$i,1)+0;
1) 空间的比较
serialize在编码后大概是json的1.5倍。
原因:
serialize后字符串包含了子串的长度,这可能是速度方面的优化,但是测试结果不尽人意。
serialize有更加详细的类型区分,而json只有四种类型,并且是以简单的符号表示。
2)速度的比较
在较小数据的情况下, serialize比json快数量级。
在大数据量的情况下,json比serialize稍微差一点
3)处理对象
json无法处理对象方法等数据。
4)使用范围
在前后端交互一般都使用JSON,另外,目前JSON只支持UTF-8编码的数据。
序列化使用serialize,特别是对象的存储。这是其存在的意义。
与对象无关的数据存储可以使用json,如包含大量数字的数组等。
这篇博客概括满全面:
你好!
是一个文件,用记事本就可以打开,可以在你安装环境下的目录下面找到,例如wamp环境放在根目录下的tmp文件夹(临时内容文件夹)下。
打字不易,采纳哦!
?php
$arr=array();//空的数组
$sql='select id,name from tab';
$res=mysql_query($sql);
while($row=mysql_fetch_array($res)) $arr[]=$row;//添加一行数据到数组里面
mysql_free_result($res);
foreach ($arr as $row) echo $row['id'].' '.$row['name'].'br';//显示数组
?
客户端数据存储机制cookie
在实际的Web应用中经常需要在客户端存储一些客户信息 一方面是为了改善用户体验(如存储访问密码 历史表单信息) 另一方面有效地减轻了服务器数据读取压力 访问者在第一次访问页面时设置cookie变量是存储在客户端计算机中 当下次浏览器请求某个页面时 就可以读取cookie中存储的值 从而实现客户端数据存取
下面将通过一个例子展示一个客户端数据存储的实际应用 执行流程如下
( )创建一个存储访问者名字的cookie;
( )当访问者首次访问网站时 访问者会被要求填写姓名信息 该姓名信息会存储于cookie中
( )当访问者再次访问网站时浏览器会显示欢迎词信息
在JavaScript创建cookie
创建一个可在cookie变量中存储访问者姓名的函数 代码如下
function setCookie(c_name value expiredays)
{
var exdate=new Date() //实例化日期变量
exdate setDate(exdate getDate()+expiredays) //设置日期变量
document cookie=c_name+ = +escape(value)+
((expiredays==null) ? : ;expires= +exdate toGMTString())
}
【代码解读】
setCookie()函数的功能是设置cookie的名称 值及失效时间 首先将获取当前的日期转换为有效的日期 然后设置cookie名称 值及失效时间 并将该值存入document cookie对象
从JavaScript取回cookie的值
从JavaScript取回cookie的值 创建读取客户端cookie值的函数 同时判断当前cookie的状态 代码如下
function getCookie(c_name)
{
if (document cookie length ) //判断当前cookie是否为空
{
c_start=document cookie indexOf(c_name + = )
if (c_start!= )
{
c_startc_start=c_start + c_name length+
c_end=document cookie indexOf( ; c_start)
if (c_end== ) c_end=document cookie length
return unescape(document cookie substring(c_start c_end))
//返回客户端cookie的值
}
}
return
}
【代码解读】
getCookie()函数首先会判断document cookie对象中是否存有cookie 如果document cookie对象存有某些cookie值 那么会继续检查指定的cookie是否已储存 如果满足判断条件就返回cookie存储值 否则返回空字符串
JavaScript流程控制
当完成了cookie的创建和读取之后 需要创建一个流程控制函数 这个函数的作用是 如果cookie已设置 则显示欢迎词 否则显示提示框要求用户输入名字
function checkCookie() {
username=getCookie( username ) //获得cookie中的用户名变量
if (username != null username != ) {
alert( Wele again +username+ ! ) //弹出欢迎信息
} else {
username=prompt( Please enter your name: )
if (username != null username != ) {
setCookie( username username ) //设置cookie
}
}
}
客户端数据存储示例的完整代码如下
lishixinzhi/Article/program/PHP/201311/21526