如何反序列化标准类()


How can I unserialize std class()

我在数据库中序列化了值,然后当我这样做时,我从数据库中获取它们

<pre>
print_r($DataValues)
</pre>

它向我展示了这样的价值

[0] => stdClass Object
    (
        [categories] => a:1:{i:38;s:21:"Summer Market Session";}
    )
[1] => stdClass Object
    (
        [categories] => a:1:{i:38;s:21:"Summer Market Session";}
    )
[2] => stdClass Object
    (
        [categories] => a:2:{i:38;s:21:"Summer Market Session";i:39;s:21:"Autumn Market Session";}
    )

只想在反序列化后获取值,我试图反序列化但显示 bolean 假

当我尝试在为每个值运行后打印值时,它会显示下面提到的错误

可捕获的致命错误:无法将类 stdClass 的对象转换为字符串

我不知道我是怎么做到的,我正在尝试我所知道的所有反序列化策略,我也试图通过使用 foreach 循环将值存储在数组中,但我失败了。

请帮助我如何在解开它后获得它的价值...??

好吧,不知何故,我仍然看不到问题。我已经用这个重建了你似乎从数据库得到的数据结构:

$testObject             = new stdClass();
$testCategories         = array(38 => 'Summer Market Session');
$testObject->categories = serialize($testCategories);
$anotherTestObject             = new stdClass();
$anotherTestCategories         = $testCategories;
$anotherTestCategories[]       = 'Autumn Market Session';
$anotherTestObject->categories = serialize($anotherTestCategories);
$dataValues = array(
  $testObject, clone $testObject, $anotherTestObject
);
print_r($dataValues);

它给了我你在问题中引用的相同输出,所以我想这是一个正确的重建。要解开这些数据,简单的循环就足够了:

foreach ($dataValues as $dataElement) {
  $categories = unserialize($dataElement->categories);
  print_r($categories);
}

还是我做错了什么?

无论如何,这里有一个沙盒来检查所有这些。