5

我需要一些帮助来反序列化和更新数组值并重新序列化它们(使用 php)。基本上我希望能够反序列化一个字符串,更新特定键的值(不丢失其他值)并重新序列化它。我已经搜索过,似乎找不到可行的解决方案(或者我只是伤寒)。

我要更新的数组非常简单。它有一个键和值。

array (
    'key' => 'value',
    'key2' => 'value2',
)

我目前有,但它不起作用。

foreach(unserialize($serializedData) as $key => $val)
{
    if($key == 'key')
    {
        $serializedData[$key] = 'newValue';
    }
}

$updated_status = serialize($serializedData);
4

2 回答 2

8

您不能像在这里尝试那样直接写入序列化数据字符串:

$serializedData[$key] = 'newValue';

您需要将数据反序列化为数组,更新数组,然后再次对其进行序列化。似乎您只想在密钥存在时更新值,因此您可以这样做:

$data = unserialize($serializedData);
if(array_key_exists('key', $data)) {
    $data['key'] = 'New Value';
}
$serializedData = serialize($data);
于 2013-01-21T19:55:05.830 回答
6

确切地说,您是如何描述它的:反序列化、更新、序列化。

$data = unserialize($serializedData);
$data['key'] = 'newValue';
$updated_status = serialize($data);
于 2013-01-21T19:45:43.617 回答