php - 在 PHP 中序列化/反序列化布尔数据
问题描述
我在使用serialize
和unserialize
PHP 函数时遇到了一些问题,因为它与布尔数据有关。
如果我serialize
这个数组:
$test = [
"id" => "test",
"name" => "Test",
"isActive" => 0
];
$data = serialize($test);
然后unserialize
它:
$data = unserialize($data);
这是我看到的数组:
$data = [
"id" => "test",
"name" => "Test",
"isActive" => "0"
];
它已将布尔属性转换为字符串。关于如何保持该属性完好无损的任何想法?
我读了serialize
,unserialize
不认识真/假。
解决方案
对于 unsialize,您必须将 $data 作为参数而不是 $test。然后布尔变量也被精确地再现。
$test = [
"string" => "test",
"int" => 0,
"isActive" => true,
"bool" => false
];
$data = serialize($test);
$testRestored = unserialize($data);
var_export($testRestored);
输出:
array (
'string' => 'test',
'int' => 0,
'isActive' => true,
'bool' => false,
)
两个数组的严格比较 === 表明数组 $test 和 $testRestored 具有相同的内容。
var_dump($test === $testRestored); //bool(true)
推荐阅读
- javascript - 两个孩子有相同的钥匙……反应(离子),虽然钥匙是唯一的
- python - 我正在尝试使用 GUI 进行快速排序,但我的代码已损坏
- android - Android广播接收器在应用程序未运行或未启动时甚至在运行时都不会触发
- sql - 使用先前值作为回填的每日状态
- reactjs - TS2339:“从不”类型上不存在属性“getBoundingClientRect”
- java - 使用 HashMap 计算字符
- symfony - 具有相同模式的多个防火墙
- javascript - 使用@wordpress/create-block 时如何使用edit.js 和save.js
- java - 错误:E/AndroidRuntime:致命异常:主要
- javascript - 使用PNG的Google Maps javascript API自定义可拖动标记在Safari中不可见