unserialize 从已存储的表示中创建 PHP 的值
发表日期:2021-07-01 08:57:22 | 来源: | | 浏览(1001) 分类:变量处理 函数
unserialize
(PHP 4, PHP 5, PHP 7, PHP 8)
unserialize — 从已存储的表示中创建 PHP 的值
说明
$str
): mixedunserialize() 对单一的已序列化的变量进行操作,将其转换回 PHP 的值。
参数
-
str
-
序列化后的字符串。
若被反序列化的变量是一个对象,在成功地重新构造对象之后,PHP 会自动地试图去调用 __wakeup() 成员函数(如果存在的话)。
注意: unserialize_callback_func 指令
如果在反序列化的时候需要实例化一个未定义类,则可以设置回调函数以供调用(以免得到的是不完整的 object “__PHP_Incomplete_Class”)。可通过 php.ini、ini_set() 或 .htaccess 定义‘unserialize_callback_func’。每次实例化一个未定义类时它都会被调用。若要禁止这个特性,只需置空此设定。
返回值
返回的是转换之后的值,可为 integer、float、string、array 或 object。
如果传递的字符串不可反序列化,则返回 false
,并产生一个 E_NOTICE
。
更新日志
版本 | 说明 |
---|---|
4.2.0 | 添加了 unserialize_callback_func 指令。 |
范例
示例 #1 unserialize() 例子
<?php // 这里,我们使用 unserialize() 装载来自数据库的 $session_data 数组中的会话数据。// 此例是描述 serialize() 的那个例子的补充。$conn = odbc_connect("webdb", "php", "chicken"); $stmt = odbc_prepare($conn, "SELECT data FROM sessions WHERE id = ?"); $sqldata = array($_SERVER['PHP_AUTH_USER']); if (!odbc_execute($stmt, $sqldata) || !odbc_fetch_into($stmt, $tmp)) { // 如果执行出错或返回错误,则初始化为空数组 $session_data = array(); } else { // 现在我们需要的是 $tmp[0] 中已序列化的数据。 $session_data = unserialize($tmp[0]); if (!is_array($session_data)) { // 出错,初始化为空数组 $session_data = array(); } } ?>
示例 #2 unserialize_callback_func 例子
<?php $serialized_object='O:1:"a":1:{ s:5:"value"; s:3:"100"; } '; // unserialize_callback_func 从 PHP 4.2.0 起可用ini_set('unserialize_callback_func', 'mycallback'); // 设置您的回调函数function mycallback($classname) { // 只需包含含有类定义的文件 // $classname 指出需要的是哪一个类} ?>
注释
如果反序列化了 false
的值,或者在过程中发生了错误,都会返回 false
。
可以通过 str
和 serialize(false)
进行比较,或者捕捉 E_NOTICE
错误来判断这种特殊情况。
- PHP(0)
- PHP杂项(34)
- PHP基础-李炎恢系列课程(20)
- 中文函数手册(0)
- 错误处理 函数(13)
- OPcache 函数(6)
- PHP 选项/信息 函数(54)
- Zip 函数(10)
- Hash 函数(15)
- OpenSSL 函数(63)
- Date/Time 函数(51)
- 目录函数(9)
- Fileinfo 函数(6)
- iconv 函数(11)
- 文件系统函数(81)
- 多字节字符串 函数(57)
- GD 和图像处理 函数(114)
- 可交换图像信息(5)
- Math 函数(50)
- 程序执行函数(11)
- PCNTL 函数(23)
- JSON 函数(4)
- SPL 函数(15)
- URL 函数(10)
- cURL 函数(32)
- 网络 函数(33)
- FTP 函数(36)
- Session 函数(23)
- PCRE 函数(11)
- PCRE 正则语法(19)
- 数组 函数(81)
- 类/对象 函数(18)
- 函数处理 函数(13)
- 变量处理 函数(37)
- boolval 获取变量的布尔值(0)
- debug_zval_dump Dumps a string representation of an internal zval structure to output(0)
- doubleval floatval() 的别名(0)
- empty 检查一个变量是否为空(0)
- floatval 获取变量的浮点值(0)
- get_debug_type Gets the type name of a variable in a way that is suitable for debugging(0)
- get_defined_vars 返回由所有已定义变量所组成的数组(0)
- get_resource_id Returns an integer identifier for the given resource(0)
- get_resource_type 返回资源(resource)类型(0)
- gettype 获取变量的类型(0)
- intval 获取变量的整数值(0)
- is_array 检测变量是否是数组(0)
- is_bool 检测变量是否是布尔值(0)
- is_callable 检测参数是否为合法的可调用结构(0)
- is_countable Verify that the contents of a variable is a countable value(0)
- is_double is_float() 的别名(0)
- is_float 检测变量是否是浮点型(0)
- is_int 检测变量是否是整数(0)
- is_integer is_int() 的别名(0)
- is_iterable Verify that the contents of a variable is an iterable value(0)
- is_long is_int() 的别名(0)
- is_null 检测变量是否为 null(0)
- is_numeric 检测变量是否为数字或数字字符串(0)
- is_object 检测变量是否是一个对象(0)
- is_real is_float() 的别名(0)
- is_resource 检测变量是否为资源类型(0)
- is_scalar 检测变量是否是一个标量(0)
- is_string 检测变量是否是字符串(0)
- isset 检测变量是否已设置并且非 null(0)
- print_r 以易于理解的格式打印变量。(0)
- serialize 产生一个可存储的值的表示(0)
- settype 设置变量的类型(0)
- strval 获取变量的字符串值(0)
- unserialize 从已存储的表示中创建 PHP 的值(0)
- unset 释放给定的变量(0)
- var_dump 打印变量的相关信息(0)
- var_export 输出或返回一个变量的字符串表示(0)
- SimpleXML 函数(3)
- 杂项 函数(31)
- 字符串 函数(101)