Невозможно десериализовать массив объектов в php - PullRequest
0 голосов
/ 17 декабря 2009

У меня есть массив объектов 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 Ответ

1 голос
/ 17 декабря 2009

Это:

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

совсем не похож на сериализованный массив PHP, это ваша проблема. Мусор на входе = мусор на выходе.

Предполагая, что это тот формат данных, с которым вам нужно иметь дело, рассмотрите использование explode , чтобы разбить его на массив на ';', а затем разбейте каждый член этого массива на ','.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...