mysql序列化字段反序列化_序列化serialize()与反序列化unserialize()的实例

在写序列化serialize与反序列化unserialize()时,我们先来看看:

serialize — 产生一个可存储的值的表示

描述

string serialize ( mixed $value )

serialize() 返回字符串,此字符串包含了表示 value 的字节流,可以存储于任何地方。

这有利于存储或传递 PHP 的值,同时不丢失其类型和结构。

想要将已序列化的字符串变回 PHP 的值,可使用 unserialize()。serialize() 可处理除了 resource 之外的任何类型。甚至可以 serialize() 那些包含了指向其自身引用的数组。你正 serialize() 的数组/对象中的引用也将被存储。

当序列化对象时,PHP 将试图在序列动作之前调用该对象的成员函数 __sleep()。这样就允许对象在被序列化之前做任何清除操作。类似的,当使用 unserialize() 恢复对象时, 将调用 __wakeup() 成员函数。

个人实际项目中的理解

序列化serialize()就是可以将多个字段的值如 name、vaule、sex、money等存储在数据库表中一个字段里如extend_params,而不用另外开辟那么多字段,使用的时候就要先反序列化extend_params

上代码

下面的代码是我在帘易购项目中计价算法中用到的(ECShop)

/**

* 添加定制商品到购物车

*/

public function add_customizationOp() {

if (floatval($_POST['width']) <= 0 || floatval($_POST['height']) <= 0 || floatval($_POST['c_height']) <= 0) {

echo '请选择正确的尺寸';

exit;

}

$goods = Model()->table('goods,goods_common')->join('left')->on('goods.goods_commonid = goods_common.goods_commonid')->where(array('goods_common.goods_commonid' => array('in', $_POST['goods'])))->select();

if (empty($goods)) {

echo '请选择好合适的款式面料';

exit;

}

$class = $this->_get_class_list(1573);

$gc_array = array();

foreach ($class as $val) {

$gc_array[$val['gc_id']] = $val['gc_name'];

}

foreach ($goods as $key => $val) {

if ($val['gc_id'] == 1574) {

$ratio = unserialize($val['ratio']);

break;

}

}

if (empty($ratio) || empty($goods)) {

echo '请选择好合适的款式面料';

exit;

}

$extend_params['width'] = floatval($_POST['width']);

$extend_params['height'] = floatval($_POST['height']);

$extend_params['c_height'] = floatval($_POST['c_height']);

$extend_params['hl'] = floatval($_POST['hl']);

$extend_params['settle'] = ' 计价类型:特别定制'

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值