发布于2022-06-23 18:47 阅读(326) 评论(0) 点赞(0) 收藏(4)
我正在使用php 7.1.8
,并且在我的 mysql 数据库中保存了以下字符串:
$dat = a:5:{i:0;s:4:"6162";i:1;s:4:"6160";i:2;s:4:"6236";i:3;s:4:"6326";i:4;s:4:"6308";}
我尝试$dat
使用以下内容进行转换:
$dat = json_decode($dat, true);
然而,json_decode()
回报null
。
有什么建议我做错了吗?
这显然是一个序列化数组,所以我们使用
unserialize()
不是
json_decode();
我怎么知道,这些a:5:{..}
i:0
和s:4:"6162"
这是类型和数量/计数/长度。a
包含 5 个项目的数组 int 0
和string 4
“6162”也是如此。
如果这是 JSON,它将类似于 '["6162","6160","6308" ... ]'
. 如您所见,JSON 占用的空间也少得多。
但是,这是序列化所采用的形式。也就是说,有一个用于会话的特殊序列化,我不太熟悉,但我不认为这是一个,特别是如果它来自 wordpress。
需要注意的一点是,虽然 Json 可以手动编辑而相当困难,但不要尝试使用这种类型的序列化,它可以完成,但它会招致灾难....哈哈
一般来说,您可以将它们视为同一类函数,它们都将复杂结构转换为字符串。序列化具有将整个对象存储在字符串中的好处(如果您想这样称呼它),这是 JSON 本身无法做到的。但是(序列化)是一个 PHP 的东西,所以它使数据的可移植性降低。更不用说如果你保存对象,这就是为什么我说它可能是一个好处,只有在考虑到这些数据的未来使用之后才应该这样做,因为它只能由 PHP 使用,并且只有当这些类保存在它仍然可以访问(如果保存了对象)。
这就是为什么很多时候您可能会看到使用 JSON 而不是序列化的原因。
$dat = 'a:5:{i:0;s:4:"6162";i:1;s:4:"6160";i:2;s:4:"6236";i:3;s:4:"6326";i:4;s:4:"6308";}';
var_export(unserialize($dat));
输出
array (
0 => '6162',
1 => '6160',
2 => '6236',
3 => '6326',
4 => '6308',
);
实时测试沙盒
作者:黑洞官方问答小能手
链接:http://www.phpheidong.com/blog/article/349988/7aaefa92da07e0636ffa/
来源:php黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 php黑洞网 All Rights Reserved 版权所有,并保留所有权利。 京ICP备18063182号-4
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!