简体   繁体   English

如何使用PHP更新MySQL数据库中的序列化数据?

[英]How do I update serialized data in a MySQL database using PHP?

Here is a serialized data stored in MySQL database: 这是存储在MySQL数据库中的序列化数据:

sizes_0#10_1$shape_0#20$bannertype_0#20$sizes_1#1_3$shape_1#20$

How do I remove sizes1 from the above data? 如何从上述数据中删除sizes1

First you should de-serialize the data: 首先,您应该反序列化数据:

$string = 'sizes_0#10_1$shape_0#20$bannertype_0#20$sizes_1#1_3$shape_1#20$';

function custom_unserialize($string) {
    return array_map(function($token) {
        return explode('#', $token);
    }, explode('$', $string));
}

$data = custom_unserialize($string);

then you can remove the sizes1 entry: 然后您可以删除sizes1条目:

$data_without_sizes_1 = array_filter($data, function($data) {
    return $data[0] !== 'sizes_1';
});

finally you can serialize the data again: 最后,您可以再次序列化数据:

function custom_serialize(array $data) {
    return implode('$', array_map(function($entry) {
        return implode('#', $entry);
    }, $data));
}

$serialized_string = custom_serialize($data_without_sizes_1);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM