请教PHP中JSON字符串取值问题

MYSQL中字段shezhi的内容是

a:1:{s:4:"sale";a:3:{s:10:"enoughfree";i:1;s:11:"enoughorder";d:123;s:11:"enoughareas";s:0:"";}}

PHP中取值代码是

'by' => (!(empty($goods['detail_by'])) ? $goods['detail_by'] : $shop['shezhi'])

取得的值是shezhi字段的全部内容,请问如何修改代码,只取值123那个值

阅读 3.4k
3 个回答
a:1:{s:4:"sale";a:3:{s:10:"enoughfree";i:1;s:11:"enoughorder";d:123;s:11:"enoughareas";s:0:"";}}

是序列化后的值,可以用unserialize函数转换

$before = 'a:1:{s:4:"sale";a:3:{s:10:"enoughfree";i:1;s:11:"enoughorder";d:123;s:11:"enoughareas";s:0:"";}}';

$after = unserialize($before);

var_dump($after);

输出结果是

array(1) {
  ["sale"]=>
  array(3) {
    ["enoughfree"]=>
    int(1)
    ["enoughorder"]=>
    float(123)
    ["enoughareas"]=>
    string(0) ""
  }
}

要取哪个值就直接取

很明显 shezhi 字段存储的应该是经过 serialize 处理后的PHP值,你可以先将其 unserialize 反序列化,让其显现出原本的数据结构,这样你在取值就简单了。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题