首页 > 解决方案 > 在 PHP 中序列化/反序列化布尔数据

问题描述

我在使用serializeunserializePHP 函数时遇到了一些问题,因为它与布尔数据有关。

如果我serialize这个数组:

$test = [
   "id" => "test",
   "name" => "Test",
   "isActive" => 0
];

$data = serialize($test);

然后unserialize它:

$data = unserialize($data);

这是我看到的数组:

$data = [
   "id" => "test",
   "name" => "Test",
   "isActive" => "0"
];

它已将布尔属性转换为字符串。关于如何保持该属性完好无损的任何想法?

我读了serializeunserialize不认识真/假。

标签: php

解决方案


对于 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)

推荐阅读