2012-06-20 77 views
0

我有序列化數據的基礎值,我接他們從數據庫中,然後當我這樣做我如何反序列化STD類()

<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循環,但我失敗..

請幫助我如何得到它的價值後,它未經化療......?

+0

你的班級是否存儲一些參考? (例如什麼mysql_connect返回) – dynamic

+0

實際上,我使用joomla的一個組件,它存儲所有的值,但我沒有檢索組件中的值&我不'''當我檢索時定義一個類.. – mobi001

+0

是否有必要定義一個類之前unserialize它..現在我在做什麼是簡單的從數據庫中獲取數據並將其存儲在數組中..所以我得到這個我上面提到的..但不能反序列化它,也沒有在每個循環中獲取值 – mobi001

回答

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

或者我做錯了什麼?

無論如何,這裏的a sandbox來檢查所有這一切。

+0

是@ raina77ow你是對的,類是非常相似的,就像你提到的,但事情是我正在檢索另一個目錄中的值&該文件中,我不提及該類,也沒有包含類文件。所以,你能指導我在這種情況下,如果班級沒有在該文件中提到,我必須做的事情.. – mobi001

+0

酷男人我得到了與另一個鍵看起來像多個陣列.. unserial數據但你的代碼真的爲我工作謝謝你尊重@ raina770w – mobi001