PHP:数组变量的序列化和反序列化

序列化和反序列化是PHP操作数据库、读写文件时常见的操作。

序列化,就是将PHP的变量转化为可保存的、可传输的字符串的过程;

反序列化,则是将(序列化的)字符串转化回变量。

比如,我们需要将某学生的个人信息写入数据库,可以这样:

$arr = array(
    "name" => "山可唠",
    "age" => "24",
    "grade" => "六",
    "class" => "一"
);
$str = serialize($arr);
echo $str;

输出:a:4:{s:4:"name";s:9:"山可唠";s:3:"age";s:2:"24";s:5:"grade";s:3:"六";s:5:"class";s:3:"一";}

序列化后,我们得到一长串文本。

将其存入数据库(或文件),需要时读出,再反序列化为数组,即可取值:

$str = 'a:4:{s:4:"name";s:9:"山可唠";s:3:"age";s:2:"24";s:5:"grade";s:3:"六";s:5:"class";s:3:"一";}';
$arr = unserialize($str);
print_r($arr) ;


输出:Array ( [name] => 山可唠 [age] => 24 [grade] => 六 [class] => 一 )

这种方式很适合用于处理信息表单。

假设某表单有数十个input,且可扩展,那么在数据库中很难处理——你不可能预设足够多的数据库栏目。因此,最简单的方式便是序列化后直接存到数据库中,需要时再读出,呈现在前端。

原创文章,作者:STEVE,如若转载,请注明出处:https://shinecloud.com.cn

(0)
上一篇 2022年 10月 24日 上午12:53
下一篇 2022年 10月 26日 上午1:34

相关推荐

  • CentOS 开放端口和防火墙配置

    CentOS 快速开放端口 CentOS升级到7之后,无法使用iptables控制Linuxs的端口,Centos 7使用firewalld代替了原来的iptables。此方案实测也适用于CentOS Stream 9。 查看防火墙状态 查询放行端口列表 开启端口(以添加...

    2022年 11月 7日
    58
  • PHP类的自动加载函数:spl_autload_register()

    一个PHP项目里通常有许多个类(class),如果在每个PHP页面的开头进行引入,非常麻烦,尤其是不同的PHP页面需要不同的类。 因此,PHP7之前,有__autoload()函数用于自动引用类,PHP7之后则改为了spl_autload_registe...

    2022年 10月 22日
    57
  • PHP:单例模式的多功能数据库工具类

    此数据库工具类根据传智播客2018年8月的PHP教程所设计。...

    2022年 10月 28日
    45
  • PHP类:$this和self关键字

    $this是指向对象的指针,self是指向当前类的指针。 来一个案例 $this只能在成员方法中使用。self既可以在成员方法中使用,也可以在静态方法中使用,用来调用类的常量、静态属性和方法。 若在静态方法中调用$this关键...

    2022年 10月 19日
    35
  • PHP:in_array()和array_search()的奇葩问题

    近期做项目,发现使用array_search出现的问题——搜索出错,元素分明有在数组中,但给出的结果是FALSE! 操作逻辑如下 从数据库中取出符合条件的字符串的用户id合集 使用foreach遍历这些对象 将对象中的字符串使用expl...

    2022年 11月 20日
    48

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注