无法在php中反序列化对象数组

时间:2009-12-17 03:42:35

标签: php serialization

我有一个Shift对象数组,我在PHP中使用它。我需要将这些对象存储在数据库中。我正在开发一个将向数据库添加移位的函数:

$Serialized_S = get_option('MasterShiftString');
$MasterShiftArray = unserialize($Serialized_S);

if(!$MasterShiftArray)
{
    echo "MasterShiftArray returns false";
}//end if

echo "Serialized_S:";
print_r($Serialized_S); 
echo "<br />MasterShiftString:";
print_r($MasterShiftString); 
echo "<br />end<br />"; 



if(!is_array($MasterShiftArray))
{
    echo "MasterShiftArray is not an Array....";
    $MasterShiftArray = array($last_monday_from_date => "");

}//end if
else
{


}//end else 

$WeekShiftArray = $MasterShiftArray;

array_push($WeekShiftArray, $CurrentShift);         

$MasterShiftArray[$last_monday_from_date] = $WeekShiftArray;

$Serialized_s = serialize($MasterShiftArray);

update_option('MasterShiftArray', $Serialized_s);

当然,执行此操作时我得到的是:

last_monday_from_date: 1260777600
MasterShiftArray returns falseSerialized_S:admin,resource,2,1;admin,resource,2,1;admin,resource,2,1;admin,resource,2,1;
MasterShiftString:
end

我在这里做错了什么?我已经尝试过base64编码,但这没有任何帮助。     MasterShiftArray不是数组....

1 个答案:

答案 0 :(得分:1)

此:

admin,resource,2,1;admin,resource,2,1;admin,resource,2,1;admin,resource,2,1

看起来什么都不像PHP序列化数组,这是你的问题。 Garbage in =垃圾输出。

假设这是您需要处理的数据格式,请查看使用explode将其分解为';'上的数组,然后在','上爆炸该数组的每个成员。