zoukankan      html  css  js  c++  java
  • PHP面向对象之序列化与反序列化

    序列化与反序列化

    • 概念

      • 在PHP中,数组和对象无法保存
      • 如果需要保存就要将数组或对象转换成一个序列
    • 序列化 (serialize)

      • 将数组或对象转换成一个序列
    • 反序列化 (unserialize)

      • 将序列化的字符串转换成数组或对象

    数组的序列化与反序列化

    # 数组的序列化
    <?php
    $stu= ['南京','泰州','盐城'];
    $str= serialize($stu);		//序列化
    file_put_contents('./stu.txt', $str);
    ?>
    
    # 数组的反序列化
    <?php
    $str= file_get_contents('./stu.txt');
    $stu= unserialize($str);		//反序列化
    print_r($stu);
    ?>
    

    对象的序列化与反序列化

    • 注意
      • 对象的反序列化需要有类的参与
      • 如果没有类在反序列化时候无法确定类
    # 对象的序列化
    <?php
    class Student {
    	public $name;
    	protected $sex;
    	private $add;
    	public function __construct($name, $sex, $add) {
    		$this->name= $name;
    		$this->sex= $sex;
    		$this->add= $add;
    	}
    }
    $stu= new Student('Sunny', '男', '北京');
    $str= serialize($stu);
    file_put_contents('./stu.txt', $str);
    ?>
    
    # 对象的反序列化
    <?php
    $str= file_get_contents('./stu.txt');
    $stu= unserialize($str);
    echo '<pre>';
    var_dump($stu);
    echo '</pre>';
    if(!is_string($stu)){
    	echo gettype($stu).'<br>';
    }
    foreach($stu as $key=>$value){
    	echo $key.': '.$value.'<br>';
    }
    ?>
    
  • 相关阅读:
    C#中如何求时间间隔?
    Ilist<T> 转换成 DataSet
    EditPlus 快捷键
    Array和ArrayList的异同点
    sql server 查询数据库中有多少个表
    jquery + Css 模式对话框
    paddingtop、margintop和top的区别
    JQuery之ContextMenu(右键菜单)
    关于TextBox的Enable与ReadOnly属性
    AjaxToollit 3.5 使用整理
  • 原文地址:https://www.cnblogs.com/SharkJiao/p/14117180.html
Copyright © 2011-2022 走看看