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

相关推荐

  • PHP类:$this和self关键字

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

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

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

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

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

    2022年 11月 20日
    139
  • 基于JQuery的AJAX异步文件上传方法

    对于许多初学者而言,上传表单很容易,但上传文件就麻烦了。 这里给出一个简单的方法,供参考。 HTML部分 谨记:action可以留空,enctype要设为“multipart/form-data” Javascript部分 PHP部分 如果不出意外,你的...

    2022年 11月 8日
    139
  • PHP常量:Const和Define有什么区别?

    在初学PHP时,我对这两个函数有点迷糊,虽然知道如何使用,但不知道设计这两个有什么意义。 Const const是一种语言结构,最早只能用在类(class)内,PHP5.3之后可以用在类外,实现了通用。 Define define是一个...

    2022年 10月 19日
    136

发表回复

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