0

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

<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 false

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

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

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

请帮助我在取消序列化后如何获得它的价值......??

4

1 回答 1

2

好吧,不知何故,我仍然看不到问题所在。我已经重建了您似乎从 DB 获得的数据结构:

$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);
}

还是我做错了什么?

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

于 2012-06-20T19:25:26.653 回答